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

In fast_composite_tiled_repeat() if the source image is less than a
certain constant width, a clone is created which is then
pre-repeated. However, the source image's palette, if it has one, is
not cloned, so for indexed images, the pre-repeating would crash.

Fix this by not doing any pre-repeating for images with a palette set.
---
 pixman/pixman-fast-path.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/pixman/pixman-fast-path.c b/pixman/pixman-fast-path.c
index e79b069..9778b0c 100644
--- a/pixman/pixman-fast-path.c
+++ b/pixman/pixman-fast-path.c
@@ -1280,8 +1280,9 @@ fast_composite_tiled_repeat (pixman_implementation_t *imp,
 
        src_bpp = PIXMAN_FORMAT_BPP (src_image->bits.format);
 
-       if (src_image->bits.width < REPEAT_MIN_WIDTH &&
-           (src_bpp == 32 || src_bpp == 16 || src_bpp == 8))
+       if (src_image->bits.width < REPEAT_MIN_WIDTH            &&
+           (src_bpp == 32 || src_bpp == 16 || src_bpp == 8)    &&
+           !src_image->bits.indexed)
        {
            sx = src_x;
            sx = MOD (sx, src_image->bits.width);
-- 
1.7.10.4

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

Reply via email to