stress-test: Avoid overflows in clip rectangles
authorSøren Sandmann Pedersen <ssp@redhat.com>
Mon, 30 Jul 2012 20:10:05 +0000 (16:10 -0400)
committerSøren Sandmann Pedersen <ssp@redhat.com>
Wed, 1 Aug 2012 03:51:53 +0000 (23:51 -0400)
The rectangles in the clip region set in set_general_properties()
would sometimes overflow, which would lead to messages like these:

      *** BUG ***
      In pixman_region32_union_rect: Invalid rectangle passed
      Set a breakpoint on '_pixman_log_error' to debug

when the micro version number of pixman is even.

Fix this by detecting the overflow and clamping such that the x2/y2
coordinates are less than INT32_MAX.

test/stress-test.c

index 54ab1c5..edcfe09 100644 (file)
@@ -468,6 +468,11 @@ set_general_properties (pixman_image_t *image, pixman_bool_t allow_alpha_map)
                width = lcg_rand_n (image->bits.width) - x + 10;
                height = lcg_rand_n (image->bits.height) - y + 10;
 
+               if (width + x < x)
+                   width = INT32_MAX - x;
+               if (height + y < y)
+                   height = INT32_MAX - y;
+               
                pixman_region32_union_rect (
                    &region, &region, x, y, width, height);
            }