From 9a88369b6deb688fe99e2080c9ee90af806bc346 Mon Sep 17 00:00:00 2001 From: cristy Date: Wed, 14 Jan 2015 00:55:37 +0000 Subject: [PATCH] Avoid rare assertion for the -clone option. --- MagickWand/convert.c | 20 +++++++++++--------- MagickWand/montage.c | 20 +++++++++++--------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/MagickWand/convert.c b/MagickWand/convert.c index 9a97e6605..c288bd791 100644 --- a/MagickWand/convert.c +++ b/MagickWand/convert.c @@ -979,28 +979,30 @@ WandExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info, if (LocaleCompare("clone",option+1) == 0) { Image - *clone_images; - - clone_images=image; + *clone_images, + *clone_list; + + clone_list=CloneImageList(image,exception); if (k != 0) - clone_images=image_stack[k-1].image; - if (clone_images == (Image *) NULL) - ThrowConvertException(ImageError,"UnableToCloneImage",option); + clone_list=CloneImageList(image_stack[k-1].image,exception); + if (clone_list == (Image *) NULL) + ThrowConvertException(ImageError,"ImageSequenceRequired",option); FireImageStack(MagickTrue,MagickTrue,MagickTrue); if (*option == '+') - clone_images=CloneImages(clone_images,"-1",exception); + clone_images=CloneImages(clone_list,"-1",exception); else - { + { i++; if (i == (ssize_t) argc) ThrowConvertException(OptionError,"MissingArgument",option); if (IsSceneGeometry(argv[i],MagickFalse) == MagickFalse) ThrowConvertInvalidArgumentException(option,argv[i]); - clone_images=CloneImages(clone_images,argv[i],exception); + clone_images=CloneImages(clone_list,argv[i],exception); } if (clone_images == (Image *) NULL) ThrowConvertException(OptionError,"NoSuchImage",option); AppendImageStack(clone_images); + clone_list=DestroyImageList(clone_list); break; } if (LocaleCompare("clut",option+1) == 0) diff --git a/MagickWand/montage.c b/MagickWand/montage.c index 0790f28b3..a717c44b7 100644 --- a/MagickWand/montage.c +++ b/MagickWand/montage.c @@ -618,28 +618,30 @@ WandExport MagickBooleanType MontageImageCommand(ImageInfo *image_info, if (LocaleCompare("clone",option+1) == 0) { Image - *clone_images; - - clone_images=image; + *clone_images, + *clone_list; + + clone_list=CloneImageList(image,exception); if (k != 0) - clone_images=image_stack[k-1].image; - if (clone_images == (Image *) NULL) - ThrowMontageException(ImageError,"UnableToCloneImage",option); + clone_list=CloneImageList(image_stack[k-1].image,exception); + if (clone_list == (Image *) NULL) + ThrowMontageException(ImageError,"ImageSequenceRequired",option); FireImageStack(MagickTrue,MagickTrue,MagickTrue); if (*option == '+') - clone_images=CloneImages(clone_images,"-1",exception); + clone_images=CloneImages(clone_list,"-1",exception); else - { + { i++; if (i == (ssize_t) argc) ThrowMontageException(OptionError,"MissingArgument",option); if (IsSceneGeometry(argv[i],MagickFalse) == MagickFalse) ThrowMontageInvalidArgumentException(option,argv[i]); - clone_images=CloneImages(clone_images,argv[i],exception); + clone_images=CloneImages(clone_list,argv[i],exception); } if (clone_images == (Image *) NULL) ThrowMontageException(OptionError,"NoSuchImage",option); AppendImageStack(clone_images); + clone_list=DestroyImageList(clone_list); break; } if (LocaleCompare("coalesce",option+1) == 0) -- 2.40.0