/* ======================== 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; }
/* ======================== idParallelJobManagerLocal::FreeJobList ======================== */ void idParallelJobManagerLocal::FreeJobList( idParallelJobList* jobList ) { if( jobList == NULL ) { return; } // wait for all job threads to finish because job list deletion is not thread safe for( unsigned int i = 0; i < maxThreads; i++ ) { threads[i].WaitForThread(); } int index = jobLists.FindIndex( jobList ); assert( index >= 0 && jobLists[index] == jobList ); jobLists[index]->Wait(); delete jobLists[index]; jobLists.RemoveIndexFast( index ); }
/* ======================== 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; }