mesa: Correct _mesa_clip_to_region() off-by-one.
authorEric Anholt <eric@anholt.net>
Fri, 19 Dec 2008 02:23:51 +0000 (18:23 -0800)
committerEric Anholt <eric@anholt.net>
Fri, 19 Dec 2008 02:32:07 +0000 (18:32 -0800)
Note how if:
x + width == xmax + 0: width -= 0
x + width == xmax + 1: width -= 0
x + width == xmax + 2: width -= 1

So, the function was clipping to [xmin, xmax+1), not [xmin, xmax) like it was
supposed to.  Same for ymax.

src/mesa/main/image.c

index 4551b4a3b5b5198faa908f0c4a63d29ca40bf3e0..6b19fc8454c906d3674bc62fc296b8a610f91bb0 100644 (file)
@@ -5152,7 +5152,7 @@ _mesa_clip_to_region(GLint xmin, GLint ymin,
 
    /* right clipping */
    if (*x + *width > xmax)
-      *width -= (*x + *width - xmax - 1);
+      *width -= (*x + *width - xmax);
 
    if (*width <= 0)
       return GL_FALSE;
@@ -5165,7 +5165,7 @@ _mesa_clip_to_region(GLint xmin, GLint ymin,
 
    /* top (or bottom) clipping */
    if (*y + *height > ymax)
-      *height -= (*y + *height - ymax - 1);
+      *height -= (*y + *height - ymax);
 
    if (*height <= 0)
       return GL_FALSE;