diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c index 19da9f7f57..2eb6f58338 100644 --- a/MagickCore/constitute.c +++ b/MagickCore/constitute.c @@ -824,10 +824,13 @@ MagickExport Image *ReadImage(const ImageInfo *image_info, *clones; clones=CloneImages(image,read_info->scenes,exception); + image=DestroyImageList(image); if (clones != (Image *) NULL) + image=GetFirstImageInList(clones); + if (image == (Image *) NULL) { - image=DestroyImageList(image); - image=GetFirstImageInList(clones); + read_info=DestroyImageInfo(read_info); + return(image); } } InitializeConstituteInfo(read_info,&constitute_info); diff --git a/MagickCore/list.c b/MagickCore/list.c index 484273931f..18e413c9c4 100644 --- a/MagickCore/list.c +++ b/MagickCore/list.c @@ -219,15 +219,14 @@ MagickExport Image *CloneImages(const Image *images,const char *scenes, *clone_images, *image; - ssize_t - i; - size_t length; ssize_t first, + i, last, + offset, step; assert(images != (const Image *) NULL); @@ -249,6 +248,7 @@ MagickExport Image *CloneImages(const Image *images,const char *scenes, while ((isspace((int) ((unsigned char) *p)) != 0) || (*p == ',')) p++; first=(ssize_t) strtol(p,&p,10); + offset=first; if (first < 0) first+=(ssize_t) length; else @@ -294,7 +294,7 @@ MagickExport Image *CloneImages(const Image *images,const char *scenes, } if (match == MagickFalse) (void) ThrowMagickException(exception,GetMagickModule(),OptionError, - "InvalidImageIndex","`%s'",images->filename); + "InvalidImageIndex","%g `%s'",(double) offset,images->filename); } } return(GetFirstImageInList(clone_images));