]> granicus.if.org Git - imagemagick/commitdiff
https://patch-diff.githubusercontent.com/raw/ImageMagick/ImageMagick/pull/622
authorCristy <urban-warrior@imagemagick.org>
Wed, 26 Jul 2017 13:19:01 +0000 (09:19 -0400)
committerCristy <urban-warrior@imagemagick.org>
Wed, 26 Jul 2017 13:19:01 +0000 (09:19 -0400)
coders/gif.c

index bbfd5b2067a95019c62b4521d296de4be5f7aee3..a08e5d95b7b96ef77d1253aa6ad945bc4cff6525 100644 (file)
@@ -1109,10 +1109,11 @@ static Image *ReadGIFImage(const ImageInfo *image_info,ExceptionInfo *exception)
               loop=LocaleNCompare((char *) buffer,"NETSCAPE2.0",11) == 0 ?
                 MagickTrue : MagickFalse;
             if (loop != MagickFalse)
+              while (ReadBlobBlock(image,buffer) != 0)
               {
-                while (ReadBlobBlock(image,buffer) != 0)
-                  iterations=(size_t) ((buffer[2] << 8) | buffer[1]);
-                break;
+                iterations=(size_t) ((buffer[2] << 8) | buffer[1]);
+                if (iterations != 0)
+                  iterations++;
               }
             else
               {
@@ -1739,7 +1740,7 @@ static MagickBooleanType WriteGIFImage(const ImageInfo *image_info,Image *image,
             (void) WriteBlob(image,11,(unsigned char *) "NETSCAPE2.0");
             (void) WriteBlobByte(image,(unsigned char) 0x03);
             (void) WriteBlobByte(image,(unsigned char) 0x01);
-            (void) WriteBlobLSBShort(image,(unsigned short) image->iterations);
+            (void) WriteBlobLSBShort(image,(unsigned short) (image->iterations ? image->iterations - 1 : 0));
             (void) WriteBlobByte(image,(unsigned char) 0x00);
           }
         if ((image->gamma != 1.0f/2.2f))