(svn r2574) Fix: AnimatedTile leak in town_cmd.c (this one has probably been here since day 1)
authorludde
Fri, 15 Jul 2005 16:29:30 +0000
changeset 2065 d2872c468206
parent 2064 c889fcc76398
child 2066 9ee1aea9701f
(svn r2574) Fix: AnimatedTile leak in town_cmd.c (this one has probably been here since day 1)
town_cmd.c
--- a/town_cmd.c	Fri Jul 15 15:09:52 2005 +0000
+++ b/town_cmd.c	Fri Jul 15 16:29:30 2005 +0000
@@ -71,14 +71,14 @@
 #include "table/town_land.h"
 
 
-static void TownDrawTileProc1(TileInfo *ti)
+static void TownDrawHouseLift(TileInfo *ti)
 {
 	AddChildSpriteScreen(0x5A3, 0xE, 0x3C - (_m[ti->tile].owner&0x7F));
 }
 
 typedef void TownDrawTileProc(TileInfo *ti);
 static TownDrawTileProc * const _town_draw_tile_procs[1] = {
-	TownDrawTileProc1
+	TownDrawHouseLift
 };
 
 
@@ -159,7 +159,14 @@
 	if (_tick_counter & 3)
 		return;
 
-	assert(_m[tile].m4 == 4 || _m[tile].m4 == 5);
+	// If the house is not one with a lift anymore, then stop this animating.
+	// Not exactly sure when this happens, but probably when a house changes.
+	// Before this was just a return...so it'd leak animated tiles..
+	// That bug seems to have been here since day 1??
+	if (!(_housetype_extra_flags[_m[tile].m4] & 0x20)) {
+		DeleteAnimatedTile(tile);
+		return;
+	}
 
 	if (!((old=_m[tile].owner)&0x80)) {
 		_m[tile].owner |= 0x80;
@@ -2085,5 +2092,3 @@
 const ChunkHandler _town_chunk_handlers[] = {
 	{ 'CITY', Save_TOWN, Load_TOWN, CH_ARRAY | CH_LAST},
 };
-
-