/* ======================== AssertFailed ======================== */ bool AssertFailed( const char* file, int line, const char* expression ) { // Set this to true to skip ALL assertions, including ones YOU CAUSE! static volatile bool skipAllAssertions = false; if( skipAllAssertions ) { return false; } // Set this to true to skip ONLY this assertion static volatile bool skipThisAssertion = false; skipThisAssertion = false; for( int i = 0; i < skippedAssertions.Num(); i++ ) { if( skippedAssertions[i].file == file && skippedAssertions[i].line == line ) { skipThisAssertion = true; // Set breakpoint here to re-enable if( !skipThisAssertion ) { skippedAssertions.RemoveIndexFast( i ); } return false; } } idLib::Warning( "ASSERTION FAILED! %s(%d): '%s'", file, line, expression ); // RB begin #ifdef _WIN32 if( IsDebuggerPresent() || com_assertOutOfDebugger.GetBool() ) #else //if( com_assertOutOfDebugger.GetBool() ) #endif // RB end { #ifdef _WIN32 #ifdef _MSC_VER __debugbreak(); #else // DG: mingw support DebugBreak(); #endif #else // not _WIN32 // DG: POSIX support raise( SIGTRAP ); // DG: end #endif // _WIN32 } if( skipThisAssertion ) { skippedAssertion_t* skipped = skippedAssertions.Alloc(); skipped->file = file; skipped->line = line; } return true; }
/* ======================== AssertFailed ======================== */ bool AssertFailed( const char * file, int line, const char * expression ) { // Set this to true to skip ALL assertions, including ones YOU CAUSE! static volatile bool skipAllAssertions = false; if ( skipAllAssertions ) { return false; } // Set this to true to skip ONLY this assertion static volatile bool skipThisAssertion = false; skipThisAssertion = false; for ( int i = 0; i < skippedAssertions.Num(); i++ ) { if ( skippedAssertions[i].file == file && skippedAssertions[i].line == line ) { skipThisAssertion = true; // Set breakpoint here to re-enable if ( !skipThisAssertion ) { skippedAssertions.RemoveIndexFast( i ); } return false; } } idLib::Warning( "ASSERTION FAILED! %s(%d): '%s'", file, line, expression ); if ( IsDebuggerPresent() && com_assertOutOfDebugger.GetBool() ) { __debugbreak(); } if ( skipThisAssertion ) { skippedAssertion_t * skipped = skippedAssertions.Alloc(); skipped->file = file; skipped->line = line; } return true; }