taisei/src/util/assert.c

51 lines
1.1 KiB
C
Raw Normal View History

2018-02-07 09:19:21 +01:00
/*
* This software is licensed under the terms of the MIT License.
2018-02-07 09:19:21 +01:00
* See COPYING for further information.
* ---
2024-05-16 23:30:41 +02:00
* Copyright (c) 2011-2024, Lukas Weber <laochailan@web.de>.
* Copyright (c) 2012-2024, Andrei Alexeyev <akari@taisei-project.org>.
2018-02-07 09:19:21 +01:00
*/
#include "assert.h"
2018-02-07 09:19:21 +01:00
#include "util.h"
#include "log.h"
#include "util/io.h"
2018-02-07 09:19:21 +01:00
void _ts_assert_fail(
const char *cond, const char *msg, const char *func, const char *file, int line, bool use_log
) {
use_log = use_log && log_initialized();
2018-02-07 09:19:21 +01:00
if(use_log) {
if(msg) {
_taisei_log(LOG_FAKEFATAL, func, file, line,
"%s:%i: assertion `%s` failed: %s", file, line, cond, msg);
} else {
_taisei_log(LOG_FAKEFATAL, func, file, line,
"%s:%i: assertion `%s` failed", file, line, cond);
}
log_sync(true);
} else {
if(msg) {
tsfprintf(stderr,
"%s:%i: %s(): assertion `%s` failed: %s\n", file, line, func, cond, msg);
} else {
tsfprintf(stderr,
"%s:%i: %s(): assertion `%s` failed\n", file, line, func, cond);
}
fflush(stderr);
}
2018-02-07 09:19:21 +01:00
}
2021-04-21 03:31:26 +02:00
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
void _emscripten_trap(void) {
EM_ASM({
2021-04-21 03:31:26 +02:00
throw new Error("You just activated my trap card!");
});
2021-04-21 03:31:26 +02:00
}
#endif