]> granicus.if.org Git - imagemagick/commitdiff
Moved attaching of the layers to a separate method.
authorDirk Lemstra <dirk@lemstra.org>
Sat, 24 Nov 2018 07:39:54 +0000 (08:39 +0100)
committerDirk Lemstra <dirk@lemstra.org>
Sat, 24 Nov 2018 07:48:14 +0000 (08:48 +0100)
coders/psd.c

index 40236c6baa6f5e70dc4b6851b8adb90ad1ab066e..d972ff27af464472955aa0d6ecf83529e6f58d36 100644 (file)
@@ -1588,6 +1588,40 @@ static MagickBooleanType CheckPSDChannels(const PSDInfo *psd_info,
   return(MagickFalse);
 }
 
+static void AttachPSDLayers(Image *image,LayerInfo *layer_info,
+  ssize_t number_layers)
+{
+  register ssize_t
+    i;
+
+  ssize_t
+    j;
+
+  for (i=0; i < number_layers; i++)
+  {
+    if (layer_info[i].image == (Image *) NULL)
+      {
+        for (j=i; j < number_layers - 1; j++)
+          layer_info[j] = layer_info[j+1];
+        number_layers--;
+        i--;
+      }
+  }
+  if (number_layers == 0)
+    return;
+  for (i=0; i < number_layers; i++)
+  {
+    if (i > 0)
+      layer_info[i].image->previous=layer_info[i-1].image;
+    if (i < (number_layers-1))
+      layer_info[i].image->next=layer_info[i+1].image;
+    layer_info[i].image->page=layer_info[i].page;
+  }
+  image->next=layer_info[0].image;
+  layer_info[0].image->previous=image;
+  layer_info=(LayerInfo *) RelinquishMagickMemory(layer_info);
+}
+
 static MagickBooleanType ReadPSDLayersInternal(Image *image,
   const ImageInfo *image_info,const PSDInfo *psd_info,
   const MagickBooleanType skip_layers,ExceptionInfo *exception)
@@ -1948,33 +1982,7 @@ static MagickBooleanType ReadPSDLayersInternal(Image *image,
     }
 
   if (status != MagickFalse)
-    {
-      for (i=0; i < number_layers; i++)
-      {
-        if (layer_info[i].image == (Image *) NULL)
-          {
-            for (j=i; j < number_layers - 1; j++)
-              layer_info[j] = layer_info[j+1];
-            number_layers--;
-            i--;
-          }
-      }
-
-      if (number_layers > 0)
-        {
-          for (i=0; i < number_layers; i++)
-          {
-            if (i > 0)
-              layer_info[i].image->previous=layer_info[i-1].image;
-            if (i < (number_layers-1))
-              layer_info[i].image->next=layer_info[i+1].image;
-            layer_info[i].image->page=layer_info[i].page;
-          }
-          image->next=layer_info[0].image;
-          layer_info[0].image->previous=image;
-        }
-      layer_info=(LayerInfo *) RelinquishMagickMemory(layer_info);
-    }
+    AttachPSDLayers(image,layer_info,number_layers);
   else
     layer_info=DestroyLayerInfo(layer_info,number_layers);