From af3fabeb7745e6f7f4e7fe7a299bdd234fff26a6 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Sat, 4 Feb 2017 21:02:52 -0300 Subject: [PATCH] Ensure proper config version when reading the new configuration file. --- core/globals.cpp | 13 +++++++++++++ tools/editor/editor_file_system.cpp | 4 ++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/core/globals.cpp b/core/globals.cpp index ab17e9b2b87..e748f561f16 100644 --- a/core/globals.cpp +++ b/core/globals.cpp @@ -38,6 +38,8 @@ #include "io/file_access_network.h" #include "variant_parser.h" +#define FORMAT_VERSION 3 + GlobalConfig *GlobalConfig::singleton=NULL; GlobalConfig *GlobalConfig::get_singleton() { @@ -491,6 +493,14 @@ Error GlobalConfig::_load_settings(const String p_path) { } if (assign!=String()) { + if (section==String() && assign=="config_version") { + int config_version = value; + if (config_version > FORMAT_VERSION) { + memdelete(f); + ERR_FAIL_COND_V(config_version > FORMAT_VERSION,ERR_FILE_CANT_OPEN); + } + + } set(section+"/"+assign,value); } else if (next_tag.name!=String()) { section=next_tag.name; @@ -608,6 +618,9 @@ Error GlobalConfig::_save_settings_text(const String& p_file,const Mapstore_string("config_version="+itos(FORMAT_VERSION)+"\n"); + + for(Map >::Element *E=props.front();E;E=E->next()) { if (E!=props.front()) diff --git a/tools/editor/editor_file_system.cpp b/tools/editor/editor_file_system.cpp index 41069eb7b7e..077910de338 100644 --- a/tools/editor/editor_file_system.cpp +++ b/tools/editor/editor_file_system.cpp @@ -544,7 +544,7 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir,DirAccess if (f.begins_with(".")) //ignore hidden and . / .. continue; - if (FileAccess::exists(cd.plus_file(f).plus_file("engine.cfg"))) // skip if another project inside this + if (FileAccess::exists(cd.plus_file(f).plus_file("godot.cfg"))) // skip if another project inside this continue; dirs.push_back(f); @@ -733,7 +733,7 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir,const S int idx = p_dir->find_dir_index(f); if (idx==-1) { - if (FileAccess::exists(cd.plus_file(f).plus_file("engine.cfg"))) // skip if another project inside this + if (FileAccess::exists(cd.plus_file(f).plus_file("godot.cfg"))) // skip if another project inside this continue; EditorFileSystemDirectory *efd = memnew( EditorFileSystemDirectory );