Peter Dons Tychsen wrote:
Hello Wine!

I have fixed a small bug in FastBlt(), which caused Wine to crash if the
application tried to do FastBlt() to a surface using a bad destination
setup. The problem is already fixed in normal Blt(), but was broken for
FastBlt().

This fixes a crash for the little game "Treasure Mole Winter Vacations":

http://www.alawar.com/games/treasuremolewv/

The game is now fully playable.

/Pedro


+    if (((lock_dst.bottom  > This->currentDesc.Height) || (lock_dst.bottom < 
0) ||
+        (lock_dst.top      > This->currentDesc.Height) || (lock_dst.top    < 
0) ||
+        (lock_dst.left     > This->currentDesc.Width)  || (lock_dst.left   < 
0) ||
+        (lock_dst.right    > This->currentDesc.Width)  || (lock_dst.right  < 
0) ||
+        (lock_dst.right    < lock_dst.left)                || (lock_dst.bottom 
< lock_dst.top)))
This check doesn't look right to me. Something like this should be much closer 
and
much easier to read and understand. Also it doesn't have any redundant checks:

+    if (IsRectEmpty(&lock_dst) ||
+        lock_dst.left   >= This->currentDesc.Width  || lock_dst.right < 0 ||
+        lock_dst.bottom >= This->currentDesc.Height || lock_dst.top   < 0)

">=" because you comparing coordinates against width/height.

Vitaliy.


Reply via email to