summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2010-07-15 23:40:28 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2010-07-23 19:16:43 -0400
commit90483fcabbd19b35ded094a6a592ee224029fd07 (patch)
tree5661e145c928aac700dba785e498bd477cc2dd53
parentbf125fbbb701788d5d9ed9ff368bb4fe9d9c895e (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.c16
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);