summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Deyke <rainer@eldwood.com>2018-03-19 16:37:57 +0100
committerRainer Deyke <rainer@eldwood.com>2018-03-24 15:08:55 +0100
commit31c6d6649f64b757848ad6e9f382709df3e164d7 (patch)
treef76670789eaef7b2fbe99ae42707fd27e341eddd
parent6afaf83de39d29746f8852daadadc0d46483c7ef (diff)
Fixes scene corruption when updating dependencies.
This commit fixes issue #17585: renaming/moving resources can corrupt scene files. The corruption was caused by 'ResourceFormatLoaderBinary::rename_dependencies' updating the file format version field of the affected scene file to the latest version without actually updating the content of the file to that version, resulting in a file whose content does not match its file format version field. The fix preserves the file format version field and the engine version fields when renaming dependencies.
-rw-r--r--core/io/resource_format_binary.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp
index 5dfe067902..0c626c197b 100644
--- a/core/io/resource_format_binary.cpp
+++ b/core/io/resource_format_binary.cpp
@@ -1162,9 +1162,11 @@ Error ResourceFormatLoaderBinary::rename_dependencies(const String &p_path, cons
ERR_FAIL_V(ERR_FILE_UNRECOGNIZED);
}
- fw->store_32(VERSION_MAJOR); //current version
- fw->store_32(VERSION_MINOR);
- fw->store_32(FORMAT_VERSION);
+ // Since we're not actually converting the file contents, leave the version
+ // numbers in the file untouched.
+ fw->store_32(ver_major);
+ fw->store_32(ver_minor);
+ fw->store_32(ver_format);
save_ustring(fw, get_ustring(f)); //type