summaryrefslogtreecommitdiffstats
path: root/core/project_settings.cpp
diff options
context:
space:
mode:
authorManuel Moos <manuel@moosnet.de>2018-02-25 21:05:40 +0100
committerRémi Verschelde <rverschelde@gmail.com>2018-05-01 16:25:48 +0200
commit954f7cca6025887dc2e665e3cc24b8428c29c593 (patch)
treea3b95a40573919253343b32f21df8cb4ea96f36a /core/project_settings.cpp
parent007d1754e3ae1a8f67c415552b6586208ffd0e54 (diff)
downloadredot-engine-954f7cca6025887dc2e665e3cc24b8428c29c593.tar.gz
Fix #17019 : overrides with unknown base setting
If at the time of the _GLOBAL_DEF call a setting itself was unknown, the function would always return the supplied default value instead of checking for overrides. This commit changes that, lookup now always happens which correctly takes overrides into account.
Diffstat (limited to 'core/project_settings.cpp')
-rw-r--r--core/project_settings.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/core/project_settings.cpp b/core/project_settings.cpp
index d3a62263ac..ac4a4b7d15 100644
--- a/core/project_settings.cpp
+++ b/core/project_settings.cpp
@@ -816,12 +816,11 @@ Error ProjectSettings::save_custom(const String &p_path, const CustomMap &p_cust
Variant _GLOBAL_DEF(const String &p_var, const Variant &p_default) {
Variant ret;
- if (ProjectSettings::get_singleton()->has_setting(p_var)) {
- ret = ProjectSettings::get_singleton()->get(p_var);
- } else {
+ if (!ProjectSettings::get_singleton()->has_setting(p_var)) {
ProjectSettings::get_singleton()->set(p_var, p_default);
- ret = p_default;
}
+ ret = ProjectSettings::get_singleton()->get(p_var);
+
ProjectSettings::get_singleton()->set_initial_value(p_var, p_default);
ProjectSettings::get_singleton()->set_builtin_order(p_var);
return ret;