DUK_INTERNAL void duk_default_panic_handler(duk_errcode_t code, const char *msg) { #ifdef DUK_USE_FILE_IO DUK_FPRINTF(DUK_STDERR, "PANIC %ld: %s (" #if defined(DUK_USE_PANIC_ABORT) "calling abort" #elif defined(DUK_USE_PANIC_EXIT) "calling exit" #elif defined(DUK_USE_PANIC_SEGFAULT) "segfaulting on purpose" #else #error no DUK_USE_PANIC_xxx macro defined #endif ")\n", (long) code, (const char *) (msg ? msg : "null")); DUK_FFLUSH(DUK_STDERR); #else /* omit print */ DUK_UNREF(code); DUK_UNREF(msg); #endif #if defined(DUK_USE_PANIC_ABORT) DUK_ABORT(); #elif defined(DUK_USE_PANIC_EXIT) DUK_EXIT(-1); #elif defined(DUK_USE_PANIC_SEGFAULT) /* exit() afterwards to satisfy "noreturn" */ DUK_CAUSE_SEGFAULT(); /* SCANBUILD: "Dereference of null pointer", normal */ DUK_EXIT(-1); #else #error no DUK_USE_PANIC_xxx macro defined #endif DUK_UNREACHABLE(); }
void duk_default_panic_handler(int code, const char *msg) { #ifdef DUK_USE_FILE_IO DUK_FPRINTF(DUK_STDERR, "PANIC %d: %s (" #if defined(DUK_USE_PANIC_ABORT) "calling abort" #elif defined(DUK_USE_PANIC_EXIT) "calling exit" #elif defined(DUK_USE_PANIC_SEGFAULT) "segfaulting on purpose" #else #error no DUK_USE_PANIC_xxx macro defined #endif ")\n", code, msg ? msg : "null"); DUK_FFLUSH(DUK_STDERR); #else /* omit print */ #endif #if defined(DUK_USE_PANIC_ABORT) abort(); #elif defined(DUK_USE_PANIC_EXIT) exit(-1); #elif defined(DUK_USE_PANIC_SEGFAULT) /* exit() afterwards to satisfy "noreturn" */ DUK_CAUSE_SEGFAULT(); exit(-1); #else #error no DUK_USE_PANIC_xxx macro defined #endif DUK_UNREACHABLE(); }