(svn r3006) -Fix, NewGRF: Don't assert on user input, skip data instead.
authorpeter1138
Sun, 02 Oct 2005 12:00:30 +0000
changeset 2480 c5fa654776a2
parent 2479 eb73083a5f5f
child 2481 67f404c5d261
(svn r3006) -Fix, NewGRF: Don't assert on user input, skip data instead.
-Codechange, NewGRF: Remove unnecessary NULL check.
newgrf.c
--- 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);
 		}
 	}