From: <enl...@li...> - 2002-04-24 21:12:14
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/imlib2_loaders Dir : e17/libs/imlib2_loaders/src Modified Files: loader_ani.c Log Message: Catch a couple of places where segv's were occurring. Now imlib2 just sees the loader failing to load the image. One of the problems is calloc failing and returning NULL (possibly chunk_size is extremely large from an incorrect reading of the size from the file). =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/imlib2_loaders/src/loader_ani.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- loader_ani.c 24 Apr 2002 20:24:35 -0000 1.5 +++ loader_ani.c 24 Apr 2002 21:12:12 -0000 1.6 @@ -36,7 +36,7 @@ #include "image.h" #include "color_values.h" -/*#define ANI_DBG*/ +#define ANI_DBG #ifdef ANI_DBG #define D(fmt, args...) \ @@ -207,6 +207,14 @@ ((char*)&chunk_id)[2], ((char*)&chunk_id)[3], chunk_size); chunk = (MsChunk*) calloc(1, sizeof(MsChunk*) + 2 * sizeof(DATA32) + chunk_size); + + if (!chunk) + { + D("Warning, failed to allocate ANI chunk of size %d\n", sizeof(MsChunk*) + + 2 * sizeof(DATA32) + chunk_size); + return NULL; + } + chunk->chunk_id = chunk_id; chunk->chunk_size = chunk_size; @@ -222,7 +230,7 @@ MsChunk *last_chunk; MsChunk *chunk; - if (!ani) + if (!ani || !ani->chunks) return; ani->chunks = ani_load_chunk(ani); |