diff options
author | Søren Sandmann Pedersen <ssp@redhat.com> | 2010-07-15 23:40:28 -0400 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2010-07-23 19:16:43 -0400 |
commit | 90483fcabbd19b35ded094a6a592ee224029fd07 (patch) | |
tree | 5661e145c928aac700dba785e498bd477cc2dd53 | |
parent | bf125fbbb701788d5d9ed9ff368bb4fe9d9c895e (diff) |
bits: Fix potential divide-by-zero in projective code
If the homogeneous coordinate is 0, just set the coordinates to 0.
-rw-r--r-- | 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); |