From 98234959c420140d6bd86b112afae305d7d011c3 Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Sat, 31 Mar 2018 15:43:32 +0200 Subject: [PATCH] Return null in GetImageEncoder when magick_info is null. --- MagickCore/constitute.c | 30 ++++++++++++++---------------- MagickCore/magick.c | 3 ++- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c index 3477daa74..b7e0330fb 100644 --- a/MagickCore/constitute.c +++ b/MagickCore/constitute.c @@ -992,6 +992,9 @@ MagickExport MagickBooleanType WriteImage(const ImageInfo *image_info, const MagickInfo *magick_info; + EncodeImageHandler + *encoder; + ExceptionInfo *sans_exception; @@ -1110,15 +1113,15 @@ MagickExport MagickBooleanType WriteImage(const ImageInfo *image_info, (void) CloseBlob(image); } } - if ((magick_info != (const MagickInfo *) NULL) && - (GetImageEncoder(magick_info) != (EncodeImageHandler *) NULL)) + encoder=GetImageEncoder(magick_info); + if (encoder != (EncodeImageHandler *) NULL) { /* Call appropriate image writer based on image type. */ if (GetMagickEncoderThreadSupport(magick_info) == MagickFalse) LockSemaphoreInfo(magick_info->semaphore); - status=GetImageEncoder(magick_info)(write_info,image,exception); + status=encoder(write_info,image,exception); if (GetMagickEncoderThreadSupport(magick_info) == MagickFalse) UnlockSemaphoreInfo(magick_info->semaphore); } @@ -1151,8 +1154,8 @@ MagickExport MagickBooleanType WriteImage(const ImageInfo *image_info, MagickPathExtent); magick_info=GetMagickInfo(write_info->magick,exception); } - if ((magick_info == (const MagickInfo *) NULL) || - (GetImageEncoder(magick_info) == (EncodeImageHandler *) NULL)) + encoder=GetImageEncoder(magick_info); + if (encoder == (EncodeImageHandler *) NULL) { char extension[MagickPathExtent]; @@ -1164,30 +1167,25 @@ MagickExport MagickBooleanType WriteImage(const ImageInfo *image_info, magick_info=GetMagickInfo(image->magick,exception); (void) CopyMagickString(image->filename,filename, MagickPathExtent); + encoder=GetImageEncoder(magick_info); } - if ((magick_info == (const MagickInfo *) NULL) || - (GetImageEncoder(magick_info) == (EncodeImageHandler *) NULL)) + if (encoder == (EncodeImageHandler *) NULL) { magick_info=GetMagickInfo(image->magick,exception); - if ((magick_info == (const MagickInfo *) NULL) || - (GetImageEncoder(magick_info) == (EncodeImageHandler *) NULL)) + encoder=GetImageEncoder(magick_info); + if (encoder == (EncodeImageHandler *) NULL) (void) ThrowMagickException(exception,GetMagickModule(), MissingDelegateError,"NoEncodeDelegateForThisImageFormat", "`%s'",write_info->magick); - else - (void) ThrowMagickException(exception,GetMagickModule(), - MissingDelegateWarning,"NoEncodeDelegateForThisImageFormat", - "`%s'",write_info->magick); } - if ((magick_info != (const MagickInfo *) NULL) && - (GetImageEncoder(magick_info) != (EncodeImageHandler *) NULL)) + if (encoder != (EncodeImageHandler *) NULL) { /* Call appropriate image writer based on image type. */ if (GetMagickEncoderThreadSupport(magick_info) == MagickFalse) LockSemaphoreInfo(magick_info->semaphore); - status=GetImageEncoder(magick_info)(write_info,image,exception); + status=encoder(write_info,image,exception); if (GetMagickEncoderThreadSupport(magick_info) == MagickFalse) UnlockSemaphoreInfo(magick_info->semaphore); } diff --git a/MagickCore/magick.c b/MagickCore/magick.c index a3eea1ea6..bb156a805 100644 --- a/MagickCore/magick.c +++ b/MagickCore/magick.c @@ -245,7 +245,8 @@ MagickExport DecodeImageHandler *GetImageDecoder(const MagickInfo *magick_info) */ MagickExport EncodeImageHandler *GetImageEncoder(const MagickInfo *magick_info) { - assert(magick_info != (MagickInfo *) NULL); + if (magick_info == (MagickInfo *) NULL) + return((EncodeImageHandler *) NULL); assert(magick_info->signature == MagickCoreSignature); return(magick_info->encoder); } -- 2.40.0