return(i);
}
+static inline LayerInfo *DestroyLayerInfo(LayerInfo *layer_info,
+ const ssize_t number_layers)
+{
+ ssize_t
+ i;
+
+ for (i=0; i<number_layers; i++)
+ {
+ if (layer_info[i].image != (Image *) NULL)
+ layer_info[i].image=DestroyImage(layer_info[i].image);
+ }
+
+ return (LayerInfo *) RelinquishMagickMemory(layer_info);
+}
+
static inline size_t GetPSDPacketSize(Image *image)
{
if (image->storage_class == PseudoClass)
layer_info[i].channels=ReadBlobMSBShort(image);
if (layer_info[i].channels > MaxPSDChannels)
{
- layer_info=(LayerInfo *) RelinquishMagickMemory(layer_info);
+ layer_info=DestroyLayerInfo(layer_info,number_layers);
ThrowBinaryException(CorruptImageError,"MaximumChannelsExceeded",
image->filename);
}
if (image->debug != MagickFalse)
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
" layer type was %.4s instead of 8BIM", type);
- layer_info=(LayerInfo *) RelinquishMagickMemory(layer_info);
+ layer_info=DestroyLayerInfo(layer_info,number_layers);
ThrowBinaryException(CorruptImageError,"ImproperImageHeader",
image->filename);
}
*/
if (DiscardBlobBytes(image,length-16) == MagickFalse)
{
- layer_info=(LayerInfo *) RelinquishMagickMemory(layer_info);
+ layer_info=DestroyLayerInfo(layer_info,number_layers);
ThrowFileException(exception,CorruptImageError,
"UnexpectedEndOfFile",image->filename);
}
((MagickOffsetType) (size-combined_length)));
if (DiscardBlobBytes(image,size-combined_length) == MagickFalse)
{
- layer_info=(LayerInfo *) RelinquishMagickMemory(layer_info);
+ layer_info=DestroyLayerInfo(layer_info,number_layers);
ThrowBinaryException(CorruptImageError,
"UnexpectedEndOfFile",image->filename);
}
layer_info[i].page.height,MagickFalse,exception);
if (layer_info[i].image == (Image *) NULL)
{
- for (j=0; j < i; j++)
- layer_info[j].image=DestroyImage(layer_info[j].image);
- layer_info=(LayerInfo *) RelinquishMagickMemory(layer_info);
+ layer_info=DestroyLayerInfo(layer_info,number_layers);
if (image->debug != MagickFalse)
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
" allocation of image for layer %.20g failed",(double) i);
if (DiscardBlobBytes(image,layer_info[i].channel_info[j].size) ==
MagickFalse)
{
- layer_info=(LayerInfo *) RelinquishMagickMemory(layer_info);
+ layer_info=DestroyLayerInfo(layer_info,number_layers);
ThrowBinaryException(CorruptImageError,
"UnexpectedEndOfFile",image->filename);
}