Søren Sandmann <sandm...@cs.au.dk> writes:

> Good catch. This branch:
>
>     http://cgit.freedesktop.org/~sandmann/pixman/log/?h=infinite-loop
>
> adds a test case. I haven't tried tracking down the bug at all.

The infinite loop is caused by an overflow in this expression from
FAST_BILINEAR_MAINLOOP_INT in pixman-inlines.h:

    pixman_int_to_fixed (vx + (width - 1) * unit_x) + 1; 

where unit_x is 0x200017bd and width - 1 is 5 so the multiplication
result doesn't fit in a signed 32 bit integer. A simple fix is to just
cast unit_x to int64_t, which is what the following patch does.

However, I don't know this code very well and I'm not convinced that
just casting is the right fix, so review and better suggestions are
welcome.


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

Reply via email to