diff --git a/src/core.gd b/src/core.gd index 813582b..c8a160e 100644 --- a/src/core.gd +++ b/src/core.gd @@ -208,7 +208,7 @@ Thank you for using the CORE Framework to develop your application or game!""".r func reload_configuration(new_config: CoreConfiguration = CoreConfiguration.new()) -> void: var initialized = config != null if initialized: loggeri.verb("Reloading CORE's configuration") - if config != null: config.queue_free() + if is_instance_valid(config): config.free() config = new_config.duplicate() if is_devmode(): # Override configuration in development mode config.logger_level = CoreTypes.LoggerLevel.DIAG @@ -291,20 +291,23 @@ func cleanup() -> void: else: loggeri.diag("Calling cleanup hook #" + str(hook)) await cleanup_hooks[hook].call() + await get_tree().process_frame loggeri.verb("Unregistering custom modules") for module in custom_modules_node.get_children(): await unregister_custom_module(module.name) + await get_tree().process_frame loggeri.verb("Removing custom module support") remove_child(custom_modules_node) custom_modules_node.queue_free() + await get_tree().process_frame loggeri.verb("Unloading built-in modules") var modules_reverse: Array[String] = modules.duplicate() modules_reverse.reverse() for module in modules_reverse: await get(module)._cleanup() get(module).queue_free() - print("Freeing configuration") - config.queue_free() await get_tree().process_frame + print("Freeing configuration") + config.free() print("Freeing") queue_free() diff --git a/src/logger.gd b/src/logger.gd index 0acdbd6..c2deee7 100644 --- a/src/logger.gd +++ b/src/logger.gd @@ -52,13 +52,15 @@ func _cleanup() -> void: func _schedule() -> void: var instances_remove_enty: Array[CoreLoggerInstance] = [] for instance in instances: - instances_remove_enty.append(instance) if !is_instance_valid(instance): continue if !is_instance_valid(instance.parent): logger.diag("Removing instance '" + instance.name + "'") instance.queue_free() + instances_remove_enty.append(instance) for instance in instances_remove_enty: - instances.remove_at(instances.find(instance)) + var index: int = instances.find(instance) + if index == -1: logger.error("Invalid index -1") + else: instances.remove_at(index) func _pull_config() -> void: config_level = core.config.logger_level