]> granicus.if.org Git - imagemagick/commitdiff
Optimization when reading ICC color profile
authorCristy <urban-warrior@imagemagick.org>
Fri, 11 Aug 2017 19:10:52 +0000 (15:10 -0400)
committerCristy <urban-warrior@imagemagick.org>
Fri, 11 Aug 2017 19:10:52 +0000 (15:10 -0400)
coders/ps.c

index cf1eaf46fdbf827a9a8ae35d6c4652469dd1be6b..95834c3797896770e5537b8c24c6ba3f681e62d9 100644 (file)
@@ -629,13 +629,18 @@ static Image *ReadPSImage(const ImageInfo *image_info,ExceptionInfo *exception)
         /*
           Read ICC profile.
         */
-        profile=AcquireStringInfo(65536);
+        profile=AcquireStringInfo(MagickPathExtent);
+        datum=GetStringInfoDatum(profile);
         for (i=0; (c=ProfileInteger(image,hex_digits)) != EOF; i++)
         {
-          SetStringInfoLength(profile,(size_t) i+1);
-          datum=GetStringInfoDatum(profile);
+          if (i >= GetStringInfoLength(profile))
+            {
+              SetStringInfoLength(profile,(size_t) i << 1);
+              datum=GetStringInfoDatum(profile);
+            }
           datum[i]=(unsigned char) c;
         }
+        SetStringInfoLength(profile,(size_t) i+1);
         (void) SetImageProfile(image,"icc",profile,exception);
         profile=DestroyStringInfo(profile);
         continue;