[MPlayer-cvslog] CVS: main/libvo font_load.c,1.32,1.33
Reimar Döffinger CVS
syncmail at mplayerhq.hu
Thu Mar 9 23:20:22 CET 2006
CVS change done by Reimar Döffinger CVS
Update of /cvsroot/mplayer/main/libvo
In directory mail:/var2/tmp/cvs-serv16417
Modified Files:
font_load.c
Log Message:
free resources when load_raw fails
Index: font_load.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/font_load.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- font_load.c 8 Mar 2006 10:04:05 -0000 1.32
+++ font_load.c 9 Mar 2006 22:20:20 -0000 1.33
@@ -17,15 +17,15 @@
raw_file* raw=malloc(sizeof(raw_file));
unsigned char head[32];
FILE *f=fopen(name,"rb");
- if(!f) return NULL; // can't open
- if(fread(head,32,1,f)<1) return NULL; // too small
- if(memcmp(head,"mhwanh",6)) return NULL; // not raw file
+ if(!f) goto err_out; // can't open
+ if(fread(head,32,1,f)<1) goto err_out; // too small
+ if(memcmp(head,"mhwanh",6)) goto err_out; // not raw file
raw->w=head[8]*256+head[9];
raw->h=head[10]*256+head[11];
raw->c=head[12]*256+head[13];
if(raw->w == 0) // 2 bytes were not enough for the width... read 4 bytes from the end of the header
raw->w = ((head[28]*0x100 + head[29])*0x100 + head[30])*0x100 + head[31];
- if(raw->c>256) return NULL; // too many colors!?
+ if(raw->c>256) goto err_out; // too many colors!?
mp_msg(MSGT_OSD, MSGL_DBG2, "RAW: %s %d x %d, %d colors\n",name,raw->w,raw->h,raw->c);
if(raw->c){
raw->pal=malloc(raw->c*3);
@@ -39,6 +39,12 @@
fread(raw->bmp,raw->h*raw->w*bpp,1,f);
fclose(f);
return raw;
+
+err_out:
+ if (f)
+ fclose(f);
+ free(raw);
+ return NULL;
}
extern int sub_unicode;
More information about the MPlayer-cvslog
mailing list