diff --git a/ChangeLog b/ChangeLog index 58a83ad9f8..cdae2213fc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2020-06-03 7.0.10-17 Cristy + * Release ImageMagick version 7.0.10-17, GIT revision 17... + +2020-06-03 7.0.10-17 Cristy + * Free up memory after a ICC profile is removed. + 2020-05-31 7.0.10-16 Cristy * Release ImageMagick version 7.0.10-16, GIT revision 17294:5be1abe:20200531 diff --git a/MagickCore/profile.c b/MagickCore/profile.c index ee65462c55..98d06dd9a6 100644 --- a/MagickCore/profile.c +++ b/MagickCore/profile.c @@ -923,6 +923,8 @@ MagickExport MagickBooleanType ProfileImage(Image *image,const char *name, #endif #define ThrowProfileException(severity,tag,context) \ { \ + if (profile != (StringInfo *) NULL) \ + profile=DestroyStringInfo(profile); \ if (cms_context != (cmsContext) NULL) \ cmsDeleteContext(cms_context); \ if (source_info.profile != (cmsHPROFILE) NULL) \ diff --git a/MagickCore/property.c b/MagickCore/property.c index 632bdd5275..9fa4a06e68 100644 --- a/MagickCore/property.c +++ b/MagickCore/property.c @@ -4566,7 +4566,11 @@ MagickExport MagickBooleanType SetImageProperty(Image *image, (void) SetImageInfo(image_info,1,exception); profile=FileToStringInfo(image_info->filename,~0UL,exception); if (profile != (StringInfo *) NULL) - status=SetImageProfile(image,image_info->magick,profile,exception); + { + status=SetImageProfile(image,image_info->magick,profile, + exception); + profile=DestroyStringInfo(profile); + } image_info=DestroyImageInfo(image_info); return(MagickTrue); } diff --git a/MagickCore/string.c b/MagickCore/string.c index f82e138e9e..85dcab4645 100644 --- a/MagickCore/string.c +++ b/MagickCore/string.c @@ -343,6 +343,8 @@ MagickExport StringInfo *CloneStringInfo(const StringInfo *string_info) assert(string_info != (StringInfo *) NULL); assert(string_info->signature == MagickCoreSignature); clone_info=AcquireStringInfo(string_info->length); + (void) CloneString(&clone_info->path,string_info->path); + (void) CloneString(&clone_info->name,string_info->name); if (string_info->length != 0) (void) memcpy(clone_info->datum,string_info->datum,string_info->length+1); return(clone_info); diff --git a/coders/jpeg.c b/coders/jpeg.c index d860706bce..f960cbc955 100644 --- a/coders/jpeg.c +++ b/coders/jpeg.c @@ -278,7 +278,7 @@ static int GetCharacter(j_decompress_ptr jpeg_info) { (void) (*jpeg_info->src->fill_input_buffer)(jpeg_info); if (jpeg_info->err->msg_code == JWRN_JPEG_EOF) - return EOF; + return(EOF); } jpeg_info->src->bytes_in_buffer--; return((int) GETJOCTET(*jpeg_info->src->next_input_byte++));