From 4cc3280080107e710aa80831348111297a695afb Mon Sep 17 00:00:00 2001 From: Chris Cranford Date: Fri, 12 Jan 2024 09:40:07 -0500 Subject: [PATCH] GH-68 Fix `max_call_stack` property key --- src/plugin/settings.cpp | 2 +- src/script/instances/script_instance.cpp | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/plugin/settings.cpp b/src/plugin/settings.cpp index 5c834ac3..9c2993dd 100644 --- a/src/plugin/settings.cpp +++ b/src/plugin/settings.cpp @@ -85,10 +85,10 @@ void OrchestratorSettings::_register_settings() { // Orchestrator v2 _settings.emplace_back(RESOURCE_SETTING("settings/default_type", "Object", "Node")); - _settings.emplace_back(RANGE_SETTING("settings/runtime_max_call_stack", "256,1024", 1024)); _settings.emplace_back(SENUM_SETTING("settings/log_level", "FATAL,ERROR,WARN,INFO,DEBUG,TRACE", "INFO")); _settings.emplace_back(BOOL_SETTING("settings/save_copy_as_text_resource", false)); + _settings.emplace_back(RANGE_SETTING("settings/runtime/max_call_stack", "256,1024,256", 1024)); _settings.emplace_back(INT_SETTING("settings/runtime/max_loop_iterations", 1000000)); _settings.emplace_back(BOOL_SETTING("settings/runtime/tickable", true)); diff --git a/src/script/instances/script_instance.cpp b/src/script/instances/script_instance.cpp index 4021a28d..a54064f3 100644 --- a/src/script/instances/script_instance.cpp +++ b/src/script/instances/script_instance.cpp @@ -731,10 +731,14 @@ void OScriptInstance::call(const StringName& p_method, const Variant* const* p_a // settings/runtime/max_call_stack OrchestratorSettings* os = OrchestratorSettings::get_singleton(); int max_call_stack = os->get_setting("settings/runtime/max_call_stack"); + if (f->max_stack > max_call_stack) + { + ERR_FAIL_MSG("Unable to call function, call stack exceeds " + itos(max_call_stack)); + } // Setup the OScriptExecutionStackInfo object OScriptExecutionStackInfo si; - si.max_stack_size = max_call_stack; //! Max Call Stack + si.max_stack_size = f->max_stack; //! Max Call Stack si.node_count = f->node_count; //! Number of nodes si.max_inputs = _max_input_args; //! max input arguments si.max_outputs = _max_output_args; //! max output arguments