Changeset - r2480:25ae24acec6c
[Not reviewed]
master
0 1 0
peter1138 - 19 years ago 2005-10-02 12:00:30
peter1138@openttd.org
(svn r3006) -Fix, NewGRF: Don't assert on user input, skip data instead.
-Codechange, NewGRF: Remove unnecessary NULL check.
1 file changed with 14 insertions and 10 deletions:
newgrf.c
14
10
0 comments (0 inline, 0 general)
newgrf.c
Show inline comments
 
@@ -1027,13 +1027,19 @@ static bool BridgeChangeInfo(uint brid, 
 
				}
 

	
 
				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 @@ static void ResetNewGRFData(void)
 
	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);
 
		}
 
	}
0 comments (0 inline, 0 general)