From 9290966044293584e2e115dfdb2db1e22a9e0c1d Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 30 Dec 2006 00:22:03 +0000 Subject: [PATCH] (svn r7631) -Fix (r1): some pointer arithmetic gave the number of entries instead of the number of bytes to move when removing the animated state from a tile. This caused desyncs between Little and Big Endian machines. Thanks to pv2b for helping me in locating the bug and to Darkvater for figuring out that the arithmetic returned the number of entries instead of bytes. --- texteff.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/texteff.c b/texteff.c index 6f1f908115..bddbb11a6f 100644 --- a/texteff.c +++ b/texteff.c @@ -324,7 +324,7 @@ void DeleteAnimatedTile(TileIndex tile) for (ti = _animated_tile_list; ti != endof(_animated_tile_list); ti++) { if (tile == *ti) { /* remove the hole */ - memmove(ti, ti + 1, endof(_animated_tile_list) - 1 - ti); + memmove(ti, ti + 1, (lastof(_animated_tile_list) - ti) * sizeof(_animated_tile_list[0])); /* and clear last item */ endof(_animated_tile_list)[-1] = 0; MarkTileDirtyByTile(tile);