Skip to content

Commit

Permalink
Errors: Fallback to fprintf if OS singleton doesn't exist
Browse files Browse the repository at this point in the history
Otherwise we would crash if something prints an error before init or
after destruction of the `OS` singleton which handles printing/logging.

(cherry picked from commit c83084f)
  • Loading branch information
akien-mga committed Jun 30, 2022
1 parent f659869 commit a7559fc
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion core/error_macros.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,13 @@ 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 char *p_error, const char *p_message, ErrorHandlerType p_type) {
OS::get_singleton()->print_error(p_function, p_file, p_line, p_error, p_message, (Logger::ErrorType)p_type);
if (OS::get_singleton()) {
OS::get_singleton()->print_error(p_function, p_file, p_line, p_error, p_message, (Logger::ErrorType)p_type);
} else {
// Fallback if errors happen before OS init or after it's destroyed.
const char *err_details = (p_message && *p_message) ? p_message : p_error;
fprintf(stderr, "ERROR: %s\n at: %s (%s:%i)\n", err_details, p_function, p_file, p_line);
}

_global_lock();
ErrorHandlerList *l = error_handler_list;
Expand Down

0 comments on commit a7559fc

Please sign in to comment.