extern "C" NS_EXPORT void Crash(int16_t how) { switch (how) { case CRASH_INVALID_POINTER_DEREF: { volatile int* foo = (int*)0x42; *foo = 0; // not reached break; } case CRASH_PURE_VIRTUAL_CALL: { PureVirtualCall(); // not reached break; } case CRASH_RUNTIMEABORT: { NS_RUNTIMEABORT("Intentional crash"); break; } case CRASH_OOM: { mozilla::unused << moz_xmalloc((size_t) -1); mozilla::unused << moz_xmalloc((size_t) -1); mozilla::unused << moz_xmalloc((size_t) -1); break; } case CRASH_MOZ_CRASH: { MOZ_CRASH(); break; } default: break; } }
/* void crash (); */ NS_IMETHODIMP nsTestCrasher::Crash(PRInt16 how) { switch (how) { case nsITestCrasher::CRASH_INVALID_POINTER_DEREF: { volatile int* foo = (int*)0x42; *foo = 0; // not reached break; } case nsITestCrasher::CRASH_PURE_VIRTUAL_CALL: { PureVirtualCall(); // not reached break; } default: return NS_ERROR_INVALID_ARG; } return NS_OK; }