rasterize traps that extend outside of the image bounds correctly
authorVladimir Vukicevic <vladimir@pobox.com>
Sun, 26 Aug 2007 06:30:41 +0000 (23:30 -0700)
committerCarl Worth <cworth@cworth.org>
Sun, 26 Aug 2007 06:31:07 +0000 (23:31 -0700)
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

pixman/pixman-edge-imp.h
pixman/pixman-edge.c
pixman/pixman-private.h

index 5655318..c242aa4 100644 (file)
@@ -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;
     
index 191752f..24758c3 100644 (file)
@@ -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;
     
index 89abf8f..775f7a7 100644 (file)
@@ -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)