newgrf.c
changeset 2480 c5fa654776a2
parent 2479 eb73083a5f5f
child 2488 cbe3d6b60c27
--- a/newgrf.c	Sat Oct 01 17:41:41 2005 +0000
+++ b/newgrf.c	Sun Oct 02 12:00:30 2005 +0000
@@ -1027,13 +1027,19 @@
 				}
 
 				for (table = tableid; table < tableid + numtables; table++) {
-					assert(table < 7);
-					if (bridge->sprite_table[table] == NULL) {
-						bridge->sprite_table[table] = malloc(32 * sizeof(**bridge->sprite_table));
+					if (table < 7) {
+						if (bridge->sprite_table[table] == NULL) {
+							bridge->sprite_table[table] = malloc(32 * sizeof(**bridge->sprite_table));
+						}
+
+						for (sprite = 0; sprite < 32; sprite++)
+							bridge->sprite_table[table][sprite] = grf_load_dword(&buf);
+					} else {
+						grfmsg(GMS_WARN, "BridgeChangeInfo: Table %d >= 7, skipping.", table);
+						// Skip past invalid data.
+						for (sprite = 0; sprite < 32; sprite++)
+							grf_load_dword(&buf);
 					}
-
-					for (sprite = 0; sprite < 32; sprite++)
-						bridge->sprite_table[table][sprite] = grf_load_dword(&buf);
 				}
 			}
 			break;
@@ -2272,10 +2278,8 @@
 	for (i = 0; i < MAX_BRIDGES; i++) {
 		if (_bridge[i].sprite_table != NULL) {
 			byte j;
-			for (j = 0; j < 7; j++) {
-				if (_bridge[i].sprite_table[j] != NULL)
-					free(_bridge[i].sprite_table[j]);
-			}
+			for (j = 0; j < 7; j++)
+				free(_bridge[i].sprite_table[j]);
 			free(_bridge[i].sprite_table);
 		}
 	}