From: dirk Date: Sat, 15 Mar 2014 21:36:56 +0000 (+0000) Subject: The PSD reader tries to create a merged image if the merged image is corrupted. X-Git-Tag: 7.0.1-0~2578 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2de94f5ff88944751b5d625aed674d56b59237af;p=imagemagick The PSD reader tries to create a merged image if the merged image is corrupted. --- diff --git a/coders/psd.c b/coders/psd.c index a34a60312..8210d1390 100644 --- a/coders/psd.c +++ b/coders/psd.c @@ -1771,8 +1771,20 @@ static Image *ReadPSDImage(const ImageInfo *image_info, (void) LogMagickEvent(CoderEvent,GetMagickModule(), " reading the precombined layer"); if (has_merged_image != MagickFalse || GetImageListLength(image) == 1) - (void) ReadPSDMergedImage(image,&psd_info,exception); - else + has_merged_image=(MagickBooleanType) ReadPSDMergedImage(image,&psd_info, + exception); + if (has_merged_image == MagickFalse && GetImageListLength(image) == 1 && + length != 0) + { + SeekBlob(image,offset,SEEK_SET); + if (ReadPSDLayers(image,&psd_info,MagickFalse,exception) != + MagickTrue) + { + (void) CloseBlob(image); + return((Image *) NULL); + } + } + if (has_merged_image == MagickFalse && GetImageListLength(image) > 1) { Image *merged;