Browse Source

[iOS] Fix plugin configuration loading

Clear ConfigFile parameter before loading new file.
Ignore duplicate input plist keys

(cherry picked from commit aa321f0a244fd0a8c072806a12203b8de9b50135)
Sergey Minakov 4 years ago
parent
commit
f3da335416
2 changed files with 8 additions and 1 deletions
  1. 6 1
      platform/iphone/export/export.cpp
  2. 2 0
      platform/iphone/plugin/godot_plugin_config.h

+ 6 - 1
platform/iphone/export/export.cpp

@@ -372,6 +372,8 @@ void EditorExportPlatformIOS::get_export_options(List<ExportOption> *r_options)
 		r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "plugins/" + found_plugins[i].name), false));
 	}
 
+	Set<String> plist_keys;
+
 	for (int i = 0; i < found_plugins.size(); i++) {
 		// Editable plugin plist values
 		PluginConfigIOS plugin = found_plugins[i];
@@ -383,7 +385,10 @@ void EditorExportPlatformIOS::get_export_options(List<ExportOption> *r_options)
 			switch (item.type) {
 				case PluginConfigIOS::PlistItemType::STRING_INPUT: {
 					String preset_name = "plugins_plist/" + key;
-					r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, preset_name), item.value));
+					if (!plist_keys.has(preset_name)) {
+						r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, preset_name), item.value));
+						plist_keys.insert(preset_name);
+					}
 				} break;
 				default:
 					continue;

+ 2 - 0
platform/iphone/plugin/godot_plugin_config.h

@@ -270,6 +270,8 @@ static inline PluginConfigIOS load_plugin_config(Ref<ConfigFile> config_file, co
 		return plugin_config;
 	}
 
+	config_file->clear();
+
 	Error err = config_file->load(path);
 
 	if (err != OK) {