From ae12904cc15142086867007b565e236c8dcd85f7 Mon Sep 17 00:00:00 2001 From: Dirk Lemstra <dirk@lemstra.org> Date: Sat, 24 Nov 2018 08:39:54 +0100 Subject: [PATCH] Moved attaching of the layers to a separate method. --- coders/psd.c | 62 +++++++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/coders/psd.c b/coders/psd.c index 40236c6ba..d972ff27a 100644 --- a/coders/psd.c +++ b/coders/psd.c @@ -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); -- 2.40.0