]> granicus.if.org Git - imagemagick/commitdiff
Corrected parsing of the threshold map and fixed incorrect increment.
authordirk <dirk@git.imagemagick.org>
Mon, 10 Oct 2016 10:27:42 +0000 (12:27 +0200)
committerdirk <dirk@git.imagemagick.org>
Mon, 10 Oct 2016 10:28:18 +0000 (12:28 +0200)
MagickCore/threshold.c

index 200b25f8dc897b4657fe8d7ba3ebb8626ed90263..a23b832f50165b08dd86d82e6be1facffe73659d 100644 (file)
@@ -1348,12 +1348,17 @@ MagickExport MagickBooleanType OrderedDitherImage(Image *image,
     levels[i]=2.0;
   p=strchr((char *) threshold_map,',');
   if ((p != (char *) NULL) && (isdigit((int) ((unsigned char) *(++p))) != 0))
-    for (i=0; (*p != '\0') && (i < MaxPixelChannels); i++)
     {
       GetNextToken(p,&p,MagickPathExtent,token);
-      if (*token == ',')
+      for (i=0; (i < MaxPixelChannels); i++)
+        levels[i]=StringToDouble(token,(char **) NULL);
+      for (i=0; (*p != '\0') && (i < MaxPixelChannels); i++)
+      {
         GetNextToken(p,&p,MagickPathExtent,token);
-      levels[i]=StringToDouble(token,(char **) NULL);
+        if (*token == ',')
+          GetNextToken(p,&p,MagickPathExtent,token);
+        levels[i]=StringToDouble(token,(char **) NULL);
+      }
     }
   for (i=0; i < MaxPixelChannels; i++)
     if (fabs(levels[i]) >= 1)
@@ -1407,8 +1412,11 @@ MagickExport MagickBooleanType OrderedDitherImage(Image *image,
         PixelTrait traits=GetPixelChannelTraits(image,channel);
         if ((traits & UpdatePixelTrait) == 0)
           continue;
-        if (fabs(levels[n++]) < MagickEpsilon)
-          continue;
+        if (fabs(levels[n]) < MagickEpsilon)
+          {
+            n++;
+            continue;
+          }
         threshold=(ssize_t) (QuantumScale*q[i]*(levels[n]*(map->divisor-1)+1));
         level=threshold/(map->divisor-1);
         threshold-=level*(map->divisor-1);