mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-01-24 14:19:11 -05:00
UI: Rename existing (corrupt) collection file if loading fails
This commit is contained in:
@@ -1165,12 +1165,34 @@ void OBSBasic::Load(const char *file)
|
||||
obs_data_t *data = obs_data_create_from_json_file_safe(file, "bak");
|
||||
if (!data) {
|
||||
disableSaving--;
|
||||
blog(LOG_INFO, "No scene file found, creating default scene");
|
||||
const string name = filesystem::u8path(file).stem().u8string();
|
||||
const auto path = filesystem::u8path(file);
|
||||
const string name = path.stem().u8string();
|
||||
/* Check if file exists but failed to load. */
|
||||
if (filesystem::exists(path)) {
|
||||
/* Assume the file is corrupt and rename it to allow
|
||||
* for manual recovery if possible. */
|
||||
auto newPath = path;
|
||||
newPath.concat(".invalid");
|
||||
|
||||
blog(LOG_WARNING,
|
||||
"File exists but appears to be corrupt, renaming "
|
||||
"to \"%s\" before continuing.",
|
||||
newPath.filename().u8string().c_str());
|
||||
|
||||
error_code ec;
|
||||
filesystem::rename(path, newPath, ec);
|
||||
if (ec) {
|
||||
blog(LOG_ERROR,
|
||||
"Failed renaming corrupt file with %d",
|
||||
ec.value());
|
||||
}
|
||||
}
|
||||
|
||||
config_set_string(App()->GlobalConfig(), "Basic",
|
||||
"SceneCollection", name.c_str());
|
||||
config_set_string(App()->GlobalConfig(), "Basic",
|
||||
"SceneCollectionFile", name.c_str());
|
||||
blog(LOG_INFO, "No scene file found, creating default scene");
|
||||
CreateDefaultScene(true);
|
||||
SaveProject();
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user