]> granicus.if.org Git - imagemagick/commitdiff
The PSD reader tries to create a merged image if the merged image is corrupted.
authordirk <dirk@git.imagemagick.org>
Sat, 15 Mar 2014 21:36:56 +0000 (21:36 +0000)
committerdirk <dirk@git.imagemagick.org>
Sat, 15 Mar 2014 21:36:56 +0000 (21:36 +0000)
coders/psd.c

index a34a60312a71785339456c187e5c0b78e9b5083c..8210d1390678280f19f7f2c1fd1fc60e89812cbc 100644 (file)
@@ -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;