]> granicus.if.org Git - php/commitdiff
- ensure that x1<x2 or y1<y2
authorPierre Joye <pajoye@php.net>
Fri, 30 Dec 2005 09:53:05 +0000 (09:53 +0000)
committerPierre Joye <pajoye@php.net>
Fri, 30 Dec 2005 09:53:05 +0000 (09:53 +0000)
ext/gd/libgd/gd.c

index 66214dfe70af4f4c3f6199a68e7a8f375d2eaa45..b8acd1d155370629e46b84b8bf9af1841d44d215 100644 (file)
@@ -1019,6 +1019,7 @@ void gdImageAABlend (gdImagePtr im)
 /* Bresenham as presented in Foley & Van Dam */
 void gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
 {
+       int t;
        int dx, dy, incr1, incr2, d, x, y, xend, yend, xdirflag, ydirflag;
        int wid;
        int w, wstart;
@@ -1031,6 +1032,12 @@ void gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
 
        /* Vertical */
        if (x1==x2) {
+               if (y2 < y1) {
+                       t = y2;
+                       y2 = y1;
+                       y1 = t;
+               }
+
                for (;y1 <= y2; y1++) {
                        gdImageSetPixel(im, x1,y1, color);
                }
@@ -1039,6 +1046,12 @@ void gdImageLine (gdImagePtr im, int x1, int y1, int x2, int y2, int color)
 
        /* Horizontal */
        if (y1==y2) {
+               if (x2 < x1) {
+                       t = x2;
+                       x2 = x1;
+                       x1 = t;
+               }
+
                for (;x1 <= x2; x1++) {
                        gdImageSetPixel(im, x1,y1, color);
                }