(svn r3006) -Fix, NewGRF: Don't assert on user input, skip data instead.

-Codechange, NewGRF: Remove unnecessary NULL check.
pull/155/head
peter1138 19 years ago
parent 0c6d899818
commit 907b232946

@ -1027,13 +1027,19 @@ static bool BridgeChangeInfo(uint brid, int numinfo, int prop, byte **bufp, int
} }
for (table = tableid; table < tableid + numtables; table++) { for (table = tableid; table < tableid + numtables; table++) {
assert(table < 7); if (table < 7) {
if (bridge->sprite_table[table] == NULL) { if (bridge->sprite_table[table] == NULL) {
bridge->sprite_table[table] = malloc(32 * sizeof(**bridge->sprite_table)); bridge->sprite_table[table] = malloc(32 * sizeof(**bridge->sprite_table));
} }
for (sprite = 0; sprite < 32; sprite++) for (sprite = 0; sprite < 32; sprite++)
bridge->sprite_table[table][sprite] = grf_load_dword(&buf); 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);
}
} }
} }
break; break;
@ -2272,10 +2278,8 @@ static void ResetNewGRFData(void)
for (i = 0; i < MAX_BRIDGES; i++) { for (i = 0; i < MAX_BRIDGES; i++) {
if (_bridge[i].sprite_table != NULL) { if (_bridge[i].sprite_table != NULL) {
byte j; byte j;
for (j = 0; j < 7; j++) { for (j = 0; j < 7; j++)
if (_bridge[i].sprite_table[j] != NULL) free(_bridge[i].sprite_table[j]);
free(_bridge[i].sprite_table[j]);
}
free(_bridge[i].sprite_table); free(_bridge[i].sprite_table);
} }
} }

Loading…
Cancel
Save