Commit 635006fc1 for imagemagick.org
commit 635006fc10288ae0379bf6056ea11169b5dfcdcf
Author: Cristy <urban-warrior@imagemagick.org>
Date: Sat Apr 18 11:59:35 2026 -0400
release icon directory
diff --git a/coders/icon.c b/coders/icon.c
index d8ba93809..fdc6450f3 100644
--- a/coders/icon.c
+++ b/coders/icon.c
@@ -433,7 +433,7 @@ static Image *ReadICONImage(const ImageInfo *image_info,
{
png=(unsigned char *) RelinquishMagickMemory(png);
ThrowICONReaderException(CorruptImageError,
- "InsufficientImageDataInFile");
+ "InsufficientImageDataInFile");
}
read_info=CloneImageInfo(image_info);
(void) CopyMagickString(read_info->magick,"PNG",MagickPathExtent);
@@ -441,7 +441,10 @@ static Image *ReadICONImage(const ImageInfo *image_info,
read_info=DestroyImageInfo(read_info);
png=(unsigned char *) RelinquishMagickMemory(png);
if (icon_image == (Image *) NULL)
- return(DestroyImageList(image));
+ {
+ directory=RelinquishIconDirectory(directory);
+ return(DestroyImageList(image));
+ }
DestroyBlob(icon_image);
icon_image->blob=ReferenceBlob(image->blob);
ReplaceImageInList(&image,icon_image);
@@ -510,11 +513,13 @@ static Image *ReadICONImage(const ImageInfo *image_info,
ThrowICONReaderException(CorruptImageError,
"InsufficientImageDataInFile");
if (AcquireImageColormap(image,image->colors,exception) == MagickFalse)
- ThrowICONReaderException(ResourceLimitError,"MemoryAllocationFailed");
+ ThrowICONReaderException(ResourceLimitError,
+ "MemoryAllocationFailed");
icon_colormap=(unsigned char *) AcquireQuantumMemory((size_t)
image->colors,4UL*sizeof(*icon_colormap));
if (icon_colormap == (unsigned char *) NULL)
- ThrowICONReaderException(ResourceLimitError,"MemoryAllocationFailed");
+ ThrowICONReaderException(ResourceLimitError,
+ "MemoryAllocationFailed");
count=ReadBlob(image,(size_t) (4*image->colors),icon_colormap);
if (count != (ssize_t) (4*image->colors))
{
@@ -542,7 +547,10 @@ static Image *ReadICONImage(const ImageInfo *image_info,
break;
status=SetImageExtent(image,image->columns,image->rows,exception);
if (status == MagickFalse)
- return(DestroyImageList(image));
+ {
+ directory=RelinquishIconDirectory(directory);
+ return(DestroyImageList(image));
+ }
bytes_per_line=(((image->columns*bits_per_pixel)+31U) & ~31U) >> 3;
(void) bytes_per_line;
scanline_pad=((((image->columns*bits_per_pixel)+31U) & ~31U)-