bits: Fix potential divide-by-zero in projective code
authorSøren Sandmann Pedersen <ssp@redhat.com>
Fri, 16 Jul 2010 03:40:28 +0000 (23:40 -0400)
committerSøren Sandmann Pedersen <ssp@redhat.com>
Fri, 23 Jul 2010 23:16:43 +0000 (19:16 -0400)
If the homogeneous coordinate is 0, just set the coordinates to 0.

pixman/pixman-bits-image.c

index 95710b4..36ea0af 100644 (file)
@@ -695,12 +695,20 @@ bits_image_fetch_transformed (pixman_image_t * image,
     {
        for (i = 0; i < width; ++i)
        {
-           pixman_fixed_t x0, y0;
-
            if (!mask || mask[i])
            {
-               x0 = ((pixman_fixed_48_16_t)x << 16) / w;
-               y0 = ((pixman_fixed_48_16_t)y << 16) / w;
+               pixman_fixed_t x0, y0;
+
+               if (w != 0)
+               {
+                   x0 = ((pixman_fixed_48_16_t)x << 16) / w;
+                   y0 = ((pixman_fixed_48_16_t)y << 16) / w;
+               }
+               else
+               {
+                   x0 = 0;
+                   y0 = 0;
+               }
 
                buffer[i] =
                    bits_image_fetch_pixel_filtered (&image->bits, x0, y0);