Fix rare condition when hog's gear stucks in an infinite loop which adds 1 to its Y coordinate not checking for drowning
--- a/hedgewars/uGearsHedgehog.pas Sun Jul 08 10:35:40 2012 -0400
+++ b/hedgewars/uGearsHedgehog.pas Sun Jul 08 18:59:25 2012 +0400
@@ -957,11 +957,11 @@
SetLittle(Gear^.dX);
if (not isFalling)
-and (hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then
+ and (hwAbs(Gear^.dX) + hwAbs(Gear^.dY) < _0_03) then
begin
Gear^.State:= Gear^.State and (not gstWinner);
Gear^.State:= Gear^.State and (not gstMoving);
- while TestCollisionYWithGear(Gear,1) = 0 do
+ while (TestCollisionYWithGear(Gear,1) = 0) and not CheckGearDrowning(Gear) do
Gear^.Y:= Gear^.Y+_1;
SetLittle(Gear^.dX);
Gear^.dY:= _0