summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Vukicevic <vladimir@pobox.com>2007-08-25 23:30:41 -0700
committerCarl Worth <cworth@cworth.org>2007-08-25 23:31:07 -0700
commit8ff7213f39edc1b2b8b60d6b0cc5d5f14ca1928d (patch)
tree441714a50875f1910861c7490a2ae61110a97d5b
parent028993aacb9ec48aa9d347d0d189250b464cf30f (diff)
rasterize traps that extend outside of the image bounds correctlypixman-0.9.5
Traps that extend outside of the image bounds are rasterized incorrectly currently; the problem is a signed vs. unsigned comparison that got introduced when a width parameter went from int -> uint. This patch puts it back to int (since it's stored as an int in the bits structure to begin with), and also fixes a similar warning in the memset wrapper
-rw-r--r--pixman/pixman-edge-imp.h4
-rw-r--r--pixman/pixman-edge.c2
-rw-r--r--pixman/pixman-private.h2
3 files changed, 4 insertions, 4 deletions
diff --git a/pixman/pixman-edge-imp.h b/pixman/pixman-edge-imp.h
index 5655318..c242aa4 100644
--- a/pixman/pixman-edge-imp.h
+++ b/pixman/pixman-edge-imp.h
@@ -35,8 +35,8 @@ rasterizeEdges (pixman_image_t *image,
pixman_fixed_t y = t;
uint32_t *line;
uint32_t *buf = (image)->bits.bits;
- uint32_t stride = (image)->bits.rowstride;
- uint32_t width = (image)->bits.width;
+ int32_t stride = (image)->bits.rowstride;
+ int32_t width = (image)->bits.width;
line = buf + pixman_fixed_to_int (y) * stride;
diff --git a/pixman/pixman-edge.c b/pixman/pixman-edge.c
index 191752f..24758c3 100644
--- a/pixman/pixman-edge.c
+++ b/pixman/pixman-edge.c
@@ -129,7 +129,7 @@ fbRasterizeEdges8 (pixman_image_t *image,
int fill_size = 0;
uint32_t *buf = (image)->bits.bits;
int32_t stride = (image)->bits.rowstride;
- uint32_t width = (image)->bits.width;
+ int32_t width = (image)->bits.width;
line = buf + pixman_fixed_to_int (y) * stride;
diff --git a/pixman/pixman-private.h b/pixman/pixman-private.h
index 89abf8f..775f7a7 100644
--- a/pixman/pixman-private.h
+++ b/pixman/pixman-private.h
@@ -630,7 +630,7 @@ union pixman_image
do { \
size_t _i; \
uint8_t *_dst = (uint8_t*)(dst); \
- for(_i = 0; _i < size; _i++) { \
+ for(_i = 0; _i < (size_t) size; _i++) { \
WRITE(_dst +_i, (val)); \
} \
} while (0)