210 for (j = CrntSlot; j < RoundUpTo; j++) |
210 for (j = CrntSlot; j < RoundUpTo; j++) |
211 Map[j].Red = Map[j].Green = Map[j].Blue = 0; |
211 Map[j].Red = Map[j].Green = Map[j].Blue = 0; |
212 |
212 |
213 /* perhaps we can shrink the map? */ |
213 /* perhaps we can shrink the map? */ |
214 if (RoundUpTo < ColorUnion->ColorCount) { |
214 if (RoundUpTo < ColorUnion->ColorCount) { |
215 GifColorType *new_map = (GifColorType *)realloc(Map, |
215 GifColorType *new_map = (GifColorType *)reallocarray(Map, |
216 sizeof(GifColorType) * RoundUpTo); |
216 RoundUpTo, sizeof(GifColorType)); |
217 if( new_map == NULL ) { |
217 if( new_map == NULL ) { |
218 GifFreeMapObject(ColorUnion); |
218 GifFreeMapObject(ColorUnion); |
219 return ((ColorMapObject *) NULL); |
219 return ((ColorMapObject *) NULL); |
220 } |
220 } |
221 ColorUnion->Colors = new_map; |
221 ColorUnion->Colors = new_map; |
254 ExtensionBlock *ep; |
254 ExtensionBlock *ep; |
255 |
255 |
256 if (*ExtensionBlocks == NULL) |
256 if (*ExtensionBlocks == NULL) |
257 *ExtensionBlocks=(ExtensionBlock *)malloc(sizeof(ExtensionBlock)); |
257 *ExtensionBlocks=(ExtensionBlock *)malloc(sizeof(ExtensionBlock)); |
258 else { |
258 else { |
259 ExtensionBlock* ep_new = (ExtensionBlock *)realloc(*ExtensionBlocks, |
259 ExtensionBlock* ep_new = (ExtensionBlock *)reallocarray |
260 sizeof(ExtensionBlock) * |
260 (*ExtensionBlocks, (*ExtensionBlockCount + 1), |
261 (*ExtensionBlockCount + 1)); |
261 sizeof(ExtensionBlock)); |
262 if( ep_new == NULL ) |
262 if( ep_new == NULL ) |
263 return (GIF_ERROR); |
263 return (GIF_ERROR); |
264 *ExtensionBlocks = ep_new; |
264 *ExtensionBlocks = ep_new; |
265 } |
265 } |
266 |
266 |
347 GifMakeSavedImage(GifFileType *GifFile, const SavedImage *CopyFrom) |
347 GifMakeSavedImage(GifFileType *GifFile, const SavedImage *CopyFrom) |
348 { |
348 { |
349 if (GifFile->SavedImages == NULL) |
349 if (GifFile->SavedImages == NULL) |
350 GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage)); |
350 GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage)); |
351 else |
351 else |
352 GifFile->SavedImages = (SavedImage *)realloc(GifFile->SavedImages, |
352 GifFile->SavedImages = (SavedImage *)reallocarray(GifFile->SavedImages, |
353 sizeof(SavedImage) * (GifFile->ImageCount + 1)); |
353 (GifFile->ImageCount + 1), sizeof(SavedImage)); |
354 |
354 |
355 if (GifFile->SavedImages == NULL) |
355 if (GifFile->SavedImages == NULL) |
356 return ((SavedImage *)NULL); |
356 return ((SavedImage *)NULL); |
357 else { |
357 else { |
358 SavedImage *sp = &GifFile->SavedImages[GifFile->ImageCount++]; |
358 SavedImage *sp = &GifFile->SavedImages[GifFile->ImageCount++]; |
377 return (SavedImage *)(NULL); |
377 return (SavedImage *)(NULL); |
378 } |
378 } |
379 } |
379 } |
380 |
380 |
381 /* next, the raster */ |
381 /* next, the raster */ |
382 sp->RasterBits = (unsigned char *)malloc(sizeof(GifPixelType) * |
382 sp->RasterBits = (unsigned char *)reallocarray(NULL, |
383 CopyFrom->ImageDesc.Height * |
383 (CopyFrom->ImageDesc.Height * |
384 CopyFrom->ImageDesc.Width); |
384 CopyFrom->ImageDesc.Width), |
|
385 sizeof(GifPixelType)); |
385 if (sp->RasterBits == NULL) { |
386 if (sp->RasterBits == NULL) { |
386 FreeLastSavedImage(GifFile); |
387 FreeLastSavedImage(GifFile); |
387 return (SavedImage *)(NULL); |
388 return (SavedImage *)(NULL); |
388 } |
389 } |
389 memcpy(sp->RasterBits, CopyFrom->RasterBits, |
390 memcpy(sp->RasterBits, CopyFrom->RasterBits, |
390 sizeof(GifPixelType) * CopyFrom->ImageDesc.Height * |
391 sizeof(GifPixelType) * CopyFrom->ImageDesc.Height * |
391 CopyFrom->ImageDesc.Width); |
392 CopyFrom->ImageDesc.Width); |
392 |
393 |
393 /* finally, the extension blocks */ |
394 /* finally, the extension blocks */ |
394 if (sp->ExtensionBlocks != NULL) { |
395 if (sp->ExtensionBlocks != NULL) { |
395 sp->ExtensionBlocks = (ExtensionBlock *)malloc( |
396 sp->ExtensionBlocks = (ExtensionBlock *)reallocarray(NULL, |
396 sizeof(ExtensionBlock) * |
397 CopyFrom->ExtensionBlockCount, |
397 CopyFrom->ExtensionBlockCount); |
398 sizeof(ExtensionBlock)); |
398 if (sp->ExtensionBlocks == NULL) { |
399 if (sp->ExtensionBlocks == NULL) { |
399 FreeLastSavedImage(GifFile); |
400 FreeLastSavedImage(GifFile); |
400 return (SavedImage *)(NULL); |
401 return (SavedImage *)(NULL); |
401 } |
402 } |
402 memcpy(sp->ExtensionBlocks, CopyFrom->ExtensionBlocks, |
403 memcpy(sp->ExtensionBlocks, CopyFrom->ExtensionBlocks, |