diff --git a/core/io/logger.cpp b/core/io/logger.cpp index 30ef65078f2..4de48829d49 100644 --- a/core/io/logger.cpp +++ b/core/io/logger.cpp @@ -88,7 +88,9 @@ void Logger::log_error(const char *p_function, const char *p_file, int p_line, c logf_error(" at: %s (%s:%i)\n", p_function, p_file, p_line); for (const Ref &backtrace : p_script_backtraces) { - logf_error("%s\n", backtrace->format(3).utf8().get_data()); + if (!backtrace->is_empty()) { + logf_error("%s\n", backtrace->format(3).utf8().get_data()); + } } } diff --git a/core/object/script_backtrace.cpp b/core/object/script_backtrace.cpp index e9548f83ee2..b7ff9c38d7d 100644 --- a/core/object/script_backtrace.cpp +++ b/core/object/script_backtrace.cpp @@ -52,6 +52,7 @@ void ScriptBacktrace::_store_variables(const List &p_names, const List + + + + Returns [code]true[/code] if the backtrace has no stack frames. + + diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index 814f4e09db1..3494c326946 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -1228,7 +1228,9 @@ void UnixTerminalLogger::log_error(const char *p_function, const char *p_file, i logf_error("%s%sat: %s (%s:%i)%s\n", gray, indent, p_function, p_file, p_line, reset); for (const Ref &backtrace : p_script_backtraces) { - logf_error("%s%s%s\n", gray, backtrace->format(strlen(indent)).utf8().get_data(), reset); + if (!backtrace->is_empty()) { + logf_error("%s%s%s\n", gray, backtrace->format(strlen(indent)).utf8().get_data(), reset); + } } } diff --git a/platform/ios/ios_terminal_logger.mm b/platform/ios/ios_terminal_logger.mm index 1e6071b8e98..0dfd7b890fa 100644 --- a/platform/ios/ios_terminal_logger.mm +++ b/platform/ios/ios_terminal_logger.mm @@ -71,7 +71,9 @@ void IOSTerminalLogger::log_error(const char *p_function, const char *p_file, in } for (const Ref &backtrace : p_script_backtraces) { - os_log_error(OS_LOG_DEFAULT, "%{public}s", backtrace->format().utf8().get_data()); + if (!backtrace->is_empty()) { + os_log_error(OS_LOG_DEFAULT, "%{public}s", backtrace->format().utf8().get_data()); + } } } diff --git a/platform/linuxbsd/crash_handler_linuxbsd.cpp b/platform/linuxbsd/crash_handler_linuxbsd.cpp index 3a3420ca55f..7f98f8de615 100644 --- a/platform/linuxbsd/crash_handler_linuxbsd.cpp +++ b/platform/linuxbsd/crash_handler_linuxbsd.cpp @@ -153,7 +153,9 @@ static void handle_crash(int sig) { } if (!script_backtraces.is_empty()) { for (const Ref &backtrace : script_backtraces) { - print_error(backtrace->format()); + if (!backtrace->is_empty()) { + print_error(backtrace->format()); + } } print_error("-- END OF SCRIPT BACKTRACE --"); print_error("================================================================"); diff --git a/platform/macos/crash_handler_macos.mm b/platform/macos/crash_handler_macos.mm index a71a50e4fd0..acb21c1bc8a 100644 --- a/platform/macos/crash_handler_macos.mm +++ b/platform/macos/crash_handler_macos.mm @@ -183,7 +183,9 @@ static void handle_crash(int sig) { } if (!script_backtraces.is_empty()) { for (const Ref &backtrace : script_backtraces) { - print_error(backtrace->format()); + if (!backtrace->is_empty()) { + print_error(backtrace->format()); + } } print_error("-- END OF SCRIPT BACKTRACE --"); print_error("================================================================"); diff --git a/platform/macos/macos_terminal_logger.mm b/platform/macos/macos_terminal_logger.mm index 80840d96d90..f7251e63490 100644 --- a/platform/macos/macos_terminal_logger.mm +++ b/platform/macos/macos_terminal_logger.mm @@ -84,8 +84,10 @@ void MacOSTerminalLogger::log_error(const char *p_function, const char *p_file, } for (const Ref &backtrace : p_script_backtraces) { - os_log_error(OS_LOG_DEFAULT, "%{public}s", backtrace->format().utf8().get_data()); - logf_error("\E[0;90m%s\E[0m\n", backtrace->format(strlen(indent)).utf8().get_data()); + if (!backtrace->is_empty()) { + os_log_error(OS_LOG_DEFAULT, "%{public}s", backtrace->format().utf8().get_data()); + logf_error("\E[0;90m%s\E[0m\n", backtrace->format(strlen(indent)).utf8().get_data()); + } } } diff --git a/platform/windows/crash_handler_windows_seh.cpp b/platform/windows/crash_handler_windows_seh.cpp index af93786e6d3..dba4f0c3473 100644 --- a/platform/windows/crash_handler_windows_seh.cpp +++ b/platform/windows/crash_handler_windows_seh.cpp @@ -237,7 +237,9 @@ DWORD CrashHandlerException(EXCEPTION_POINTERS *ep) { } if (!script_backtraces.is_empty()) { for (const Ref &backtrace : script_backtraces) { - print_error(backtrace->format()); + if (!backtrace->is_empty()) { + print_error(backtrace->format()); + } } print_error("-- END OF SCRIPT BACKTRACE --"); print_error("================================================================"); diff --git a/platform/windows/crash_handler_windows_signal.cpp b/platform/windows/crash_handler_windows_signal.cpp index 0a5a2b25adc..7f60046d093 100644 --- a/platform/windows/crash_handler_windows_signal.cpp +++ b/platform/windows/crash_handler_windows_signal.cpp @@ -191,7 +191,9 @@ extern void CrashHandlerException(int signal) { } if (!script_backtraces.is_empty()) { for (const Ref &backtrace : script_backtraces) { - print_error(backtrace->format()); + if (!backtrace->is_empty()) { + print_error(backtrace->format()); + } } print_error("-- END OF SCRIPT BACKTRACE --"); print_error("================================================================"); diff --git a/platform/windows/windows_terminal_logger.cpp b/platform/windows/windows_terminal_logger.cpp index 899c6d00e13..716d7344944 100644 --- a/platform/windows/windows_terminal_logger.cpp +++ b/platform/windows/windows_terminal_logger.cpp @@ -143,7 +143,9 @@ void WindowsTerminalLogger::log_error(const char *p_function, const char *p_file } for (const Ref &backtrace : p_script_backtraces) { - logf_error("%s\n", backtrace->format(strlen(indent)).utf8().get_data()); + if (!backtrace->is_empty()) { + logf_error("%s\n", backtrace->format(strlen(indent)).utf8().get_data()); + } } SetConsoleTextAttribute(hCon, sbi.wAttributes);