jdk/src/java.desktop/share/native/libsplashscreen/giflib/gifalloc.c
changeset 40701 cfe188d1a054
parent 30496 aac453851104
equal deleted inserted replaced
40446:cf666940a804 40701:cfe188d1a054
   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,