From: Cristy Date: Sat, 16 Feb 2019 23:06:34 +0000 (-0500) Subject: ... X-Git-Tag: 7.0.8-28~6 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ed61d44f120562825293091433548b5feeaa66cd;p=imagemagick ... --- diff --git a/MagickCore/draw.c b/MagickCore/draw.c index f7086559a..b16711c89 100644 --- a/MagickCore/draw.c +++ b/MagickCore/draw.c @@ -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) {