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.
  • Loading branch information
akien-mga committed Jun 30, 2022
1 parent daa055d commit c83084f
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion core/error/error_macros.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,13 @@ void _err_print_error(const char *p_function, const char *p_file, int p_line, co

// Main error printing function.
void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const char *p_message, bool p_editor_notify, ErrorHandlerType p_type) {
OS::get_singleton()->print_error(p_function, p_file, p_line, p_error, p_message, p_editor_notify, (Logger::ErrorType)p_type);
if (OS::get_singleton()) {
OS::get_singleton()->print_error(p_function, p_file, p_line, p_error, p_message, p_editor_notify, (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 c83084f

Please sign in to comment.