From: Dirk Lemstra Date: Sat, 24 Nov 2018 09:23:51 +0000 (+0100) Subject: Only set the profile on images that were read (#1394). X-Git-Tag: 7.0.8-15~45 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bca16bc8c632069a1edfe5f20d149f7b07e07d27;p=imagemagick Only set the profile on images that were read (#1394). --- diff --git a/coders/psd.c b/coders/psd.c index 11c1f64b8..7ca3f5113 100644 --- a/coders/psd.c +++ b/coders/psd.c @@ -1622,6 +1622,18 @@ static void AttachPSDLayers(Image *image,LayerInfo *layer_info, layer_info=(LayerInfo *) RelinquishMagickMemory(layer_info); } +static inline MagickBooleanType PSDSkipImage(const ImageInfo *image_info, + const size_t index) +{ + if (image_info->number_scenes == 0) + return(MagickFalse); + if (index < image_info->scene) + return(MagickTrue); + if (index > image_info->scene+image_info->number_scenes-1) + return(MagickTrue); + return(MagickFalse); +} + static MagickBooleanType ReadPSDLayersInternal(Image *image, const ImageInfo *image_info,const PSDInfo *psd_info, const MagickBooleanType skip_layers,ExceptionInfo *exception) @@ -1953,8 +1965,7 @@ static MagickBooleanType ReadPSDLayersInternal(Image *image, for (i=0; i < number_layers; i++) { if ((layer_info[i].image == (Image *) NULL) || - ((image_info->number_scenes != 0) && ((i < image_info->scene-1) || - (i >= image_info->scene+image_info->number_scenes-1)))) + (PSDSkipImage(image_info,i) != MagickFalse)) { for (j=0; j < (ssize_t) layer_info[i].channels; j++) { @@ -2387,11 +2398,13 @@ static Image *ReadPSDImage(const ImageInfo *image_info,ExceptionInfo *exception) Image *next; + i=0; next=image; while (next != (Image *) NULL) { - (void) SetImageProfile(next,GetStringInfoName(profile),profile, - exception); + if (PSDSkipImage(image_info,i++) == MagickFalse) + (void) SetImageProfile(next,GetStringInfoName(profile),profile, + exception); next=next->next; } profile=DestroyStringInfo(profile);