/** \fn sig_segfault_handler \brief our segfault handler */ void sig_segfault_handler(int signo) { static int running=0; if(running) { signo=0; exit(1); } running=0; ADM_backTrack("Segfault",0,"??"); }
/** \fn EndAndPaddTilleSizeMatchesAviListAvi \brief Warning we assume everything is even */ bool AviListAvi::EndAndPaddTilleSizeMatches(int sizeFilled) { uint64_t pos=Tell(); // Current position uint64_t start=TellBegin()+8; // Payload start uint64_t end=start+sizeFilled; // Next chunk if(pos&1) ADM_backTrack("[AVI]CHUNK is at a even position",__LINE__,__FILE__); if(pos+8>end) { ADM_error("No space to add junk chunk ( %d, filler=%d)\n",(int)pos-start,sizeFilled); if(end<=pos) { ADM_error("CHUNK OVERFLOW ( %d, filler=%d)\n",(int)pos-start,sizeFilled); ADM_error("CHUNK OVERFLOW ( %d, filler=%d)\n",(int)pos-start,sizeFilled); ADM_error("CHUNK OVERFLOW ( %d, filler=%d)\n",(int)pos-start,sizeFilled); ADM_error("CHUNK OVERFLOW ( %d, filler=%d)\n",(int)pos-start,sizeFilled); ADM_backTrack("CHUNK overflow",__LINE__,__FILE__); return false; } int left=(int)(end-pos); for(int i=0;i<left;i++) Write8(0); // we dont have enough space to put a junk() End(); return true; } End(); uint64_t left=end-8-pos; AviListAvi junk("JUNK",getFile()); junk.Begin(); for(int i=0;i<left;i++) // Inefficient, but can be fairly large junk.Write8(0); junk.End(); return true; }