[ Thread Index |
Date Index
| More lists.liballeg.org/allegro-developers Archives
]
Compiled and running on Mac OS X 10.2.6, game atanks 0.9.8g running on top
of Allegro 4.1.11 repeatedly stuck hanging with a missile at it's flight
zenith. I traced the bug into Allegro's rotate.c, function
_parallelogram_map, and although I didn't quite understand what the code
did, I came up with the accompanied fix to situations when spr_dx equals
zero, and thusly a while loop never exits.
Thanks for the library!
--
Information Shepherd Kalle Toivonen, kato@xxxxxxxxxx, 041-5053073
"The reasonable man adapts himself to the world;
the unreasonable one persists in trying to adapt the world to himself.
Therefore all progress depends on the unreasonable man." -- GB Shaw
--- /home/kato/prj/allegro-4.1.11/src/rotate.c Mon Jun 30 02:27:03 2003
+++ src/rotate.c Fri Aug 8 00:25:24 2003
@@ -510,7 +510,8 @@
though.
*/
if ((unsigned)(l_spr_x_rounded >> 16) >= (unsigned)spr->w) {
- if ((l_spr_x_rounded < 0) == (spr_dx < 0)) {
+ if (((l_spr_x_rounded < 0) == (spr_dx < 0)) ||
+ (spr_dx == 0)) {
/* This can happen. */
goto skip_draw;
}