]> granicus.if.org Git - imagemagick/commitdiff
Return null in GetImageEncoder when magick_info is null.
authorDirk Lemstra <dirk@git.imagemagick.org>
Sat, 31 Mar 2018 13:43:32 +0000 (15:43 +0200)
committerDirk Lemstra <dirk@git.imagemagick.org>
Sat, 31 Mar 2018 13:43:52 +0000 (15:43 +0200)
MagickCore/constitute.c
MagickCore/magick.c

index 3477daa747db535c7e3299fdaa5a355eb53f8a10..b7e0330fb30419f6bf00db1ad6aabfce6e57892d 100644 (file)
@@ -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);
             }
index a3eea1ea6d81e5bc8bffddf2e8877683d876751b..bb156a80540239c96574653109569d815b03858e 100644 (file)
@@ -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);
 }