From: Søren Sandmann Pedersen <s...@redhat.com>

If the homogeneous coordinate is 0, just set the coordinates to 0.
---
 pixman/pixman-bits-image.c |   16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/pixman/pixman-bits-image.c b/pixman/pixman-bits-image.c
index 95710b4..36ea0af 100644
--- a/pixman/pixman-bits-image.c
+++ b/pixman/pixman-bits-image.c
@@ -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);
-- 
1.6.0.6

_______________________________________________
Pixman mailing list
Pixman@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pixman

Reply via email to