2
0
Эх сурвалжийг харах

Improve stack overflow error message in GDScript and VisualScript

Stack overflow errors are generally the result of infinite recursion
within a script.
Hugo Locurcio 3 жил өмнө
parent
commit
cceeb671db

+ 1 - 1
modules/gdscript/gdscript.h

@@ -368,7 +368,7 @@ public:
 
 		if (_debug_call_stack_pos >= _debug_max_call_stack) {
 			//stack overflow
-			_debug_error = "Stack Overflow (Stack Size: " + itos(_debug_max_call_stack) + ")";
+			_debug_error = vformat("Stack overflow (stack size: %s). Check for infinite recursion in your script.", _debug_max_call_stack);
 			EngineDebugger::get_script_debugger()->debug(this);
 			return;
 		}

+ 2 - 2
modules/visual_script/visual_script.cpp

@@ -1582,7 +1582,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
 
 					if (!found) {
 						r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
-						error_str = RTR("Found sequence bit but not the node in the stack, report bug!");
+						error_str = RTR("Found sequence bit but not the node in the stack (please report).");
 						error = true;
 						break;
 					}
@@ -1594,7 +1594,7 @@ Variant VisualScriptInstance::_call_internal(const StringName &p_method, void *p
 					// Check for stack overflow.
 					if (flow_stack_pos + 1 >= flow_max) {
 						r_error.error = Callable::CallError::CALL_ERROR_INVALID_METHOD;
-						error_str = RTR("Stack overflow with stack depth:") + " " + itos(output);
+						error_str = vformat(RTR("Stack overflow (stack size: %s). Check for infinite recursion in your script."), output);
 						error = true;
 						break;
 					}

+ 2 - 2
modules/visual_script/visual_script.h

@@ -522,7 +522,7 @@ public:
 
 		if (_debug_call_stack_pos >= _debug_max_call_stack) {
 			// Stack overflow.
-			_debug_error = "Stack Overflow (Stack Size: " + itos(_debug_max_call_stack) + ")";
+			_debug_error = vformat("Stack overflow (stack size: %s). Check for infinite recursion in your script.", _debug_max_call_stack);
 			EngineDebugger::get_script_debugger()->debug(this);
 			return;
 		}
@@ -545,7 +545,7 @@ public:
 		}
 
 		if (_debug_call_stack_pos == 0) {
-			_debug_error = "Stack Underflow (Engine Bug)";
+			_debug_error = "Stack underflow (engine bug), please report.";
 			EngineDebugger::get_script_debugger()->debug(this);
 			return;
 		}