From 9963c4f0d328600a39646479e7b8809694f3108a Mon Sep 17 00:00:00 2001 From: lawnjelly Date: Sat, 5 Feb 2022 12:31:54 +0000 Subject: Add fflush to error macros CRASH_NOW macros would previously crash before outputting any error messages. This PR ensures calling fflush for stdout before terminating. --- core/error/error_macros.cpp | 4 ++++ core/error/error_macros.h | 3 +++ 2 files changed, 7 insertions(+) (limited to 'core/error') diff --git a/core/error/error_macros.cpp b/core/error/error_macros.cpp index 928ddd3397..ceccd43259 100644 --- a/core/error/error_macros.cpp +++ b/core/error/error_macros.cpp @@ -118,3 +118,7 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const String &p_message, bool p_editor_notify, bool p_fatal) { _err_print_index_error(p_function, p_file, p_line, p_index, p_size, p_index_str, p_size_str, p_message.utf8().get_data(), p_fatal); } + +void _err_flush_stdout() { + fflush(stdout); +} diff --git a/core/error/error_macros.h b/core/error/error_macros.h index 802d7f9ef4..7b032fb4cd 100644 --- a/core/error/error_macros.h +++ b/core/error/error_macros.h @@ -69,6 +69,7 @@ void _err_print_error(const char *p_function, const char *p_file, int p_line, co void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const String &p_message, bool p_editor_notify = false, ErrorHandlerType p_type = ERR_HANDLER_ERROR); void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const char *p_message = "", bool p_editor_notify = false, bool fatal = false); void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const String &p_message, bool p_editor_notify = false, bool fatal = false); +void _err_flush_stdout(); #ifdef __GNUC__ //#define FUNCTION_STR __PRETTY_FUNCTION__ - too annoying @@ -789,6 +790,7 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li #define CRASH_NOW() \ if (true) { \ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Method/function failed."); \ + _err_flush_stdout(); \ GENERATE_TRAP(); \ } else \ ((void)0) @@ -801,6 +803,7 @@ void _err_print_index_error(const char *p_function, const char *p_file, int p_li #define CRASH_NOW_MSG(m_msg) \ if (true) { \ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Method/function failed.", m_msg); \ + _err_flush_stdout(); \ GENERATE_TRAP(); \ } else \ ((void)0) -- cgit v1.2.3