From 7c73b6c71cad819cd7c53c8ccf14f7e909203c0d Mon Sep 17 00:00:00 2001 From: Eric M Date: Fri, 13 Jan 2023 21:36:44 +1000 Subject: Fix Project Settings array/dicts initial value being shared instances of the current value. --- core/config/project_settings.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'core/config/project_settings.cpp') diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp index 0bf7430d84..264883ffa8 100644 --- a/core/config/project_settings.cpp +++ b/core/config/project_settings.cpp @@ -220,7 +220,9 @@ String ProjectSettings::localize_path(const String &p_path) const { void ProjectSettings::set_initial_value(const String &p_name, const Variant &p_value) { ERR_FAIL_COND_MSG(!props.has(p_name), "Request for nonexistent project setting: " + p_name + "."); - props[p_name].initial = p_value; + + // Duplicate so that if value is array or dictionary, changing the setting will not change the stored initial value. + props[p_name].initial = p_value.duplicate(); } void ProjectSettings::set_restart_if_changed(const String &p_name, bool p_restart) { @@ -1122,7 +1124,9 @@ bool ProjectSettings::_property_get_revert(const StringName &p_name, Variant &r_ return false; } - r_property = props[p_name].initial; + // Duplicate so that if value is array or dictionary, changing the setting will not change the stored initial value. + r_property = props[p_name].initial.duplicate(); + return true; } -- cgit v1.2.3