]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <mikayla-grace@urban-warrior.org>
Sat, 16 Feb 2019 23:06:34 +0000 (18:06 -0500)
committerCristy <mikayla-grace@urban-warrior.org>
Sat, 16 Feb 2019 23:06:34 +0000 (18:06 -0500)
MagickCore/draw.c

index f7086559a9ef2e42f293f97b7e1613b612573922..b16711c894d51af1bd146f615e932db3e6ab61b1 100644 (file)
@@ -1809,7 +1809,8 @@ static MagickBooleanType DrawDashPolygon(const DrawInfo *draw_info,
       break;
     if (fabs(length) < MagickEpsilon)
       {
-        n++;
+        if (draw_info->dash_pattern[n] != 0.0)
+          n++;
         if (fabs(draw_info->dash_pattern[n]) < MagickEpsilon)
           n=0;
         length=scale*draw_info->dash_pattern[n];
@@ -4976,6 +4977,15 @@ RestoreMSCWarning
 %
 */
 
+static inline double ConstrainCoordinate(double x)
+{
+  if (x < LONG_MIN)
+    return(LONG_MIN);
+  if (x > LONG_MAX)
+    return(LONG_MAX);
+  return(x);
+}
+
 static void LogPrimitiveInfo(const PrimitiveInfo *primitive_info)
 {
   const char
@@ -4991,8 +5001,8 @@ static void LogPrimitiveInfo(const PrimitiveInfo *primitive_info)
 
   PointInfo
     p,
-    q,
-    point;
+    point,
+    q;
 
   register ssize_t
     i,
@@ -5116,8 +5126,8 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image,
       status&=SetImageMask(image,CompositePixelMask,draw_info->composite_mask,
         exception);
     }
-  x=(ssize_t) ceil(primitive_info->point.x-0.5);
-  y=(ssize_t) ceil(primitive_info->point.y-0.5);
+  x=(ssize_t) ceil(ConstrainCoordinate(primitive_info->point.x-0.5));
+  y=(ssize_t) ceil(ConstrainCoordinate(primitive_info->point.y-0.5));
   image_view=AcquireAuthenticCacheView(image,exception);
   switch (primitive_info->primitive)
   {