| 19 | } |
| 20 | |
| 21 | void dbg_assert_imp(const char *filename, int line, const char *fmt, ...) |
| 22 | { |
| 23 | const bool already_failing = dbg_assert_has_failed(); |
| 24 | dbg_assert_failing.store(true, std::memory_order_release); |
| 25 | char msg[512]; |
| 26 | va_list args; |
| 27 | va_start(args, fmt); |
| 28 | str_format_v(msg, sizeof(msg), fmt, args); |
| 29 | char error[1024]; |
| 30 | str_format(error, sizeof(error), "%s(%d): %s", filename, line, msg); |
| 31 | va_end(args); |
| 32 | log_error("assert", "%s", error); |
| 33 | if(!already_failing) |
| 34 | { |
| 35 | DBG_ASSERT_HANDLER handler = dbg_assert_handler; |
| 36 | if(handler) |
| 37 | handler(error); |
| 38 | } |
| 39 | log_global_logger_finish(); |
| 40 | dbg_break(); |
| 41 | } |
| 42 | |
| 43 | void dbg_break() |
| 44 | { |
nothing calls this directly
no test coverage detected