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

index bf38b18df6fa6f3b58633fa50de95825260d22d7..3477daa747db535c7e3299fdaa5a355eb53f8a10 100644 (file)
@@ -372,6 +372,9 @@ MagickExport Image *ReadImage(const ImageInfo *image_info,
   const MagickInfo
     *magick_info;
 
+  DecodeImageHandler
+    *decoder;
+
   ExceptionInfo
     *sans_exception;
 
@@ -477,8 +480,8 @@ MagickExport Image *ReadImage(const ImageInfo *image_info,
       image=DestroyImage(image);
     }
   image=NewImageList();
-  if ((magick_info == (const MagickInfo *) NULL) ||
-      (GetImageDecoder(magick_info) == (DecodeImageHandler *) NULL))
+  decoder=GetImageDecoder(magick_info);
+  if (decoder == (DecodeImageHandler *) NULL)
     {
       delegate_info=GetDelegateInfo(read_info->magick,(char *) NULL,exception);
       if (delegate_info == (const DelegateInfo *) NULL)
@@ -487,14 +490,14 @@ MagickExport Image *ReadImage(const ImageInfo *image_info,
           (void) CopyMagickString(read_info->filename,filename,
             MagickPathExtent);
           magick_info=GetMagickInfo(read_info->magick,exception);
+          decoder=GetImageDecoder(magick_info);
         }
     }
-  if ((magick_info != (const MagickInfo *) NULL) &&
-      (GetImageDecoder(magick_info) != (DecodeImageHandler *) NULL))
+  if (decoder != (DecodeImageHandler *) NULL)
     {
       if (GetMagickDecoderThreadSupport(magick_info) == MagickFalse)
         LockSemaphoreInfo(magick_info->semaphore);
-      image=GetImageDecoder(magick_info)(read_info,exception);
+      image=decoder(read_info,exception);
       if (GetMagickDecoderThreadSupport(magick_info) == MagickFalse)
         UnlockSemaphoreInfo(magick_info->semaphore);
     }
@@ -537,8 +540,8 @@ MagickExport Image *ReadImage(const ImageInfo *image_info,
       if (status != MagickFalse)
         (void) SetImageInfo(read_info,0,exception);
       magick_info=GetMagickInfo(read_info->magick,exception);
-      if ((magick_info == (const MagickInfo *) NULL) ||
-          (GetImageDecoder(magick_info) == (DecodeImageHandler *) NULL))
+      decoder=GetImageDecoder(magick_info);
+      if (decoder == (DecodeImageHandler *) NULL)
         {
           if (IsPathAccessible(read_info->filename) != MagickFalse)
             (void) ThrowMagickException(exception,GetMagickModule(),
@@ -552,7 +555,7 @@ MagickExport Image *ReadImage(const ImageInfo *image_info,
         }
       if (GetMagickDecoderThreadSupport(magick_info) == MagickFalse)
         LockSemaphoreInfo(magick_info->semaphore);
-      image=(Image *) (GetImageDecoder(magick_info))(read_info,exception);
+      image=(Image *) (decoder)(read_info,exception);
       if (GetMagickDecoderThreadSupport(magick_info) == MagickFalse)
         UnlockSemaphoreInfo(magick_info->semaphore);
     }
index bd33ce389cdab4b15c9a1dd811783e4587f96ba3..a3eea1ea6d81e5bc8bffddf2e8877683d876751b 100644 (file)
@@ -215,7 +215,8 @@ MagickExport MagickInfo *AcquireMagickInfo(const char *module,const char *name,
 */
 MagickExport DecodeImageHandler *GetImageDecoder(const MagickInfo *magick_info)
 {
-  assert(magick_info != (MagickInfo *) NULL);
+  if (magick_info == (MagickInfo *) NULL)
+    return((DecodeImageHandler *) NULL);
   assert(magick_info->signature == MagickCoreSignature);
   return(magick_info->decoder);
 }