Mercurial > mplayer.hg
view liba52/compare.c @ 13303:2571b2e0c0b4
Fixes for VirtualAlloc function:
* mplayer received a SIGSEGV under Linux after
Opening video decoder: [dmo] DMO video codecs
VirtualAlloc(0x00400000, 859648, 0x00003000, 0x00000040)
because that region was already under use and mmap() with
MAP_FIXED has problems under Linux (see code).
VirtualAlloc() fixed in "loader/ext.c".
* VirtualAlloc() made to conform with win32 documented behavior
regarding the alignment of the address and size arguments.
* VirtualAlloc() detection of overlap with previous regions fixed.
Patch by A. Guru ( a.guru at sympatico dot ca )
author | rtognimp |
---|---|
date | Fri, 10 Sep 2004 16:39:31 +0000 |
parents | aed9850ca011 |
children | 6ade61b852eb |
line wrap: on
line source
// File written by Michael Niedermayer and its under GPL // simple file compare program, it finds the number of rounding errors // and dies if there is a larger error ( ABS(a-b)>1 ) #include <stdio.h> // FIXME no checks but its just for debuging so who cares ;) int main(int argc, char **argv) { FILE *f0, *f1; int dif=0; if(argc!=3) { printf("compare <file1> <file2>\n"); exit(2); } f0= fopen(argv[1], "rb"); f1= fopen(argv[2], "rb"); for(;;) { short c0; short c1; int d; int e0= fread(&c0, 2, 1, f0); int e1= fread(&c1, 2, 1, f1); d=c0-c1; if(e0==0 && e1==0) break; if(e0==0 || e1==0) { printf("FATAL error, files have different size!\n"); exit(1); } if(d<0) d=-d; // ABS if(d>1) { printf("FATAL error, too large differnce found (%d)!\n", d); exit(1); } if(d) dif++; } fclose(f0); fclose(f1); printf("%d (+/-1)differences found\n", dif); exit(0); }