|
@@ -194,6 +194,7 @@ void _err_flush_stdout();
|
|
|
#define CRASH_BAD_INDEX(m_index, m_size) \
|
|
|
if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
|
|
|
_err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), "", true); \
|
|
|
+ _err_flush_stdout(); \
|
|
|
GENERATE_TRAP(); \
|
|
|
} else \
|
|
|
((void)0)
|
|
@@ -208,6 +209,7 @@ void _err_flush_stdout();
|
|
|
#define CRASH_BAD_INDEX_MSG(m_index, m_size, m_msg) \
|
|
|
if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
|
|
|
_err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), m_msg, true); \
|
|
|
+ _err_flush_stdout(); \
|
|
|
GENERATE_TRAP(); \
|
|
|
} else \
|
|
|
((void)0)
|
|
@@ -296,6 +298,7 @@ void _err_flush_stdout();
|
|
|
#define CRASH_BAD_UNSIGNED_INDEX(m_index, m_size) \
|
|
|
if (unlikely((m_index) >= (m_size))) { \
|
|
|
_err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), "", true); \
|
|
|
+ _err_flush_stdout(); \
|
|
|
GENERATE_TRAP(); \
|
|
|
} else \
|
|
|
((void)0)
|
|
@@ -310,6 +313,7 @@ void _err_flush_stdout();
|
|
|
#define CRASH_BAD_UNSIGNED_INDEX_MSG(m_index, m_size, m_msg) \
|
|
|
if (unlikely((m_index) >= (m_size))) { \
|
|
|
_err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), m_msg, true); \
|
|
|
+ _err_flush_stdout(); \
|
|
|
GENERATE_TRAP(); \
|
|
|
} else \
|
|
|
((void)0)
|
|
@@ -559,6 +563,7 @@ void _err_flush_stdout();
|
|
|
#define CRASH_COND(m_cond) \
|
|
|
if (unlikely(m_cond)) { \
|
|
|
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Condition \"" _STR(m_cond) "\" is true."); \
|
|
|
+ _err_flush_stdout(); \
|
|
|
GENERATE_TRAP(); \
|
|
|
} else \
|
|
|
((void)0)
|
|
@@ -573,6 +578,7 @@ void _err_flush_stdout();
|
|
|
#define CRASH_COND_MSG(m_cond, m_msg) \
|
|
|
if (unlikely(m_cond)) { \
|
|
|
_err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Condition \"" _STR(m_cond) "\" is true.", m_msg); \
|
|
|
+ _err_flush_stdout(); \
|
|
|
GENERATE_TRAP(); \
|
|
|
} else \
|
|
|
((void)0)
|
|
@@ -808,4 +814,20 @@ void _err_flush_stdout();
|
|
|
} else \
|
|
|
((void)0)
|
|
|
|
|
|
+/**
|
|
|
+ * This should be a 'free' assert for program flow and should not be needed in any releases,
|
|
|
+ * only used in dev builds.
|
|
|
+ */
|
|
|
+#ifdef DEV_ENABLED
|
|
|
+#define DEV_ASSERT(m_cond) \
|
|
|
+ if (unlikely(!(m_cond))) { \
|
|
|
+ _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: DEV_ASSERT failed \"" _STR(m_cond) "\" is false."); \
|
|
|
+ _err_flush_stdout(); \
|
|
|
+ GENERATE_TRAP(); \
|
|
|
+ } else \
|
|
|
+ ((void)0)
|
|
|
+#else
|
|
|
+#define DEV_ASSERT(m_cond)
|
|
|
+#endif
|
|
|
+
|
|
|
#endif // ERROR_MACROS_H
|