From 7fcc7fcdd3e5b1fbb9ec6f3fa42dacdda67e4041 Mon Sep 17 00:00:00 2001 From: Arceveti Date: Fri, 15 Mar 2024 03:01:45 -0700 Subject: [PATCH] Don't close popup on page revive + some null checks --- src/crash_screen/crash_controls.c | 2 -- src/crash_screen/crash_print.c | 6 +++++- src/crash_screen/pages/page_home.c | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/crash_screen/crash_controls.c b/src/crash_screen/crash_controls.c index 55fcdb779..5aa02cf30 100644 --- a/src/crash_screen/crash_controls.c +++ b/src/crash_screen/crash_controls.c @@ -291,8 +291,6 @@ void cs_update_input(void) { (gCSCompositeController->buttonPressed & START_BUTTON) ) { gCSCompositeController->buttonPressed &= !(A_BUTTON | B_BUTTON); - // Attempt to reopen crashed page. - cs_open_popup(CS_POPUP_NONE); page->flags.crashed = FALSE; if (page->initFunc != NULL) { page->initFunc(); diff --git a/src/crash_screen/crash_print.c b/src/crash_screen/crash_print.c index 937afd16d..f8b926345 100644 --- a/src/crash_screen/crash_print.c +++ b/src/crash_screen/crash_print.c @@ -423,8 +423,12 @@ void cs_print_symbol_name_impl(u32 x, u32 y, u32 maxWidth, RGBA32 color, const c * @param[in] symbol The symbol pointer. */ void cs_print_symbol_name(u32 x, u32 y, u32 maxWidth, const MapSymbol* symbol) { + if (symbol == NULL) { + // "UNKNOWN" + cs_print(x, y, STR_COLOR_PREFIX"UNKNOWN", COLOR_RGBA32_CRASH_UNKNOWN); + } cs_print_symbol_name_impl(x, y, maxWidth, - (((symbol != NULL) && is_in_code_segment(symbol->addr)) ? COLOR_RGBA32_CRASH_FUNCTION_NAME : COLOR_RGBA32_CRASH_VARIABLE), + (is_in_code_segment(symbol->addr) ? COLOR_RGBA32_CRASH_FUNCTION_NAME : COLOR_RGBA32_CRASH_VARIABLE), get_map_symbol_name(symbol) ); } diff --git a/src/crash_screen/pages/page_home.c b/src/crash_screen/pages/page_home.c index e53074697..0d8fdf2ca 100644 --- a/src/crash_screen/pages/page_home.c +++ b/src/crash_screen/pages/page_home.c @@ -86,13 +86,15 @@ void cs_print_crashed_thread(u32 x, u32 y) { #ifdef INCLUDE_DEBUG_MAP void cs_print_func(u32 x, u32 y, __OSThreadContext* tc) { - const MapSymbol* symbol = get_map_symbol(GET_EPC(tc), SYMBOL_SEARCH_BACKWARD); // "FUNC: [function name]" size_t charX = cs_print(x, y, STR_COLOR_PREFIX"FUNC:\t", COLOR_RGBA32_CRASH_AT ); - cs_print_symbol_name(TEXT_X(charX), y, (CRASH_SCREEN_NUM_CHARS_X - charX), symbol); + const MapSymbol* symbol = get_map_symbol(GET_EPC(tc), SYMBOL_SEARCH_BACKWARD); + if (symbol != NULL) { + cs_print_symbol_name(TEXT_X(charX), y, (CRASH_SCREEN_NUM_CHARS_X - charX), symbol); + } } #endif // INCLUDE_DEBUG_MAP