diff --git a/furi/core/check.c b/furi/core/check.c index 8888eddfb..a24384e7c 100644 --- a/furi/core/check.c +++ b/furi/core/check.c @@ -136,10 +136,12 @@ FURI_NORETURN void __furi_crash() { if(__furi_check_message == NULL) { __furi_check_message = "Fatal Error"; +#ifndef __FURI_TRACE } else if(__furi_check_message == (void*)__FURI_ASSERT_MESSAGE_FLAG) { __furi_check_message = "furi_assert failed"; } else if(__furi_check_message == (void*)__FURI_CHECK_MESSAGE_FLAG) { __furi_check_message = "furi_check failed"; +#endif } furi_hal_console_puts("\r\n\033[0;31m[CRASH]"); diff --git a/furi/core/check.h b/furi/core/check.h index 004422e80..8af418962 100644 --- a/furi/core/check.h +++ b/furi/core/check.h @@ -23,9 +23,16 @@ extern "C" { #define FURI_NORETURN noreturn #endif +#define __FURI_TRACE + // Flags instead of pointers will save ~4 bytes on furi_assert and furi_check calls. +#ifndef __FURI_TRACE #define __FURI_ASSERT_MESSAGE_FLAG (0x01) #define __FURI_CHECK_MESSAGE_FLAG (0x02) +#else +#define __FURI_ASSERT_MESSAGE_FLAG __FILE__ +#define __FURI_CHECK_MESSAGE_FLAG __FILE__ +#endif /** Crash system */ FURI_NORETURN void __furi_crash();