Fix more leaks based on changes in #763
diff --git a/coders/cut.c b/coders/cut.c
index 6ae02e8..ac5b6a4 100644
--- a/coders/cut.c
+++ b/coders/cut.c
@@ -509,6 +509,10 @@
offset=SeekBlob(image,6 /*sizeof(Header)*/,SEEK_SET);
if (offset < 0)
{
+ if (palette != NULL)
+ palette=DestroyImage(palette);
+ if (clone_info != NULL)
+ clone_info=DestroyImageInfo(clone_info);
BImgBuff=(unsigned char *) RelinquishMagickMemory(BImgBuff);
ThrowReaderException(CorruptImageError,"ImproperImageHeader");
}
diff --git a/coders/dps.c b/coders/dps.c
index e4430be..e110c3b 100644
--- a/coders/dps.c
+++ b/coders/dps.c
@@ -316,12 +316,18 @@
{
(void) CloseBlob(image);
colors=(XColor *) RelinquishMagickMemory(colors);
+ XDestroyImage(dps_image);
+ XFreeResources(display,visual_info,map_info,(XPixelInfo *) NULL,
+ (XFontStruct *) NULL,&resource_info,(XWindowInfo *) NULL);
return(GetFirstImageInList(image));
}
status=SetImageExtent(image,image->columns,image->rows,exception);
if (status == MagickFalse)
{
colors=(XColor *) RelinquishMagickMemory(colors);
+ XDestroyImage(dps_image);
+ XFreeResources(display,visual_info,map_info,(XPixelInfo *) NULL,
+ (XFontStruct *) NULL,&resource_info,(XWindowInfo *) NULL);
return(DestroyImageList(image));
}
switch (image->storage_class)
diff --git a/coders/gif.c b/coders/gif.c
index d87279f..9ea4c42 100644
--- a/coders/gif.c
+++ b/coders/gif.c
@@ -1186,6 +1186,7 @@
{
meta_image=DestroyImage(meta_image);
global_colormap=(unsigned char *) RelinquishMagickMemory(global_colormap);
+ info=(unsigned char *) RelinquishMagickMemory(info);
ThrowReaderException(ResourceLimitError,
"MemoryAllocationFailed");
}