(svn r4429) - CodeChange[newgrf]: Action0, prop 0x0D. use calloc to allocate memory and zero it out and change the loop a little
authorDarkvater
Sat, 15 Apr 2006 16:03:45 +0000
changeset 3555 7a4f6e2aee0f
parent 3554 c16eadc2d060
child 3556 d25b35568c48
(svn r4429) - CodeChange[newgrf]: Action0, prop 0x0D. use calloc to allocate memory and zero it out and change the loop a little
newgrf.c
--- a/newgrf.c	Sat Apr 15 03:08:14 2006 +0000
+++ b/newgrf.c	Sat Apr 15 16:03:45 2006 +0000
@@ -1014,29 +1014,27 @@
 				Bridge *bridge = &_bridge[brid + i];
 				byte tableid = grf_load_byte(&buf);
 				byte numtables = grf_load_byte(&buf);
-				byte table, sprite;
 
 				if (bridge->sprite_table == NULL) {
-					/* Allocate memory for sprite table pointers and set to NULL */
-					bridge->sprite_table = malloc(7 * sizeof(*bridge->sprite_table));
-					for (table = 0; table < 7; table++)
-						bridge->sprite_table[table] = NULL;
+					/* Allocate memory for sprite table pointers and zero out */
+					bridge->sprite_table = calloc(7, sizeof(*bridge->sprite_table));
 				}
 
-				for (table = tableid; table < tableid + numtables; 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 (; numtables-- != 0; tableid++) {
+					byte sprite;
+
+					if (tableid >= 7) { // skip invalid data
+						grfmsg(GMS_WARN, "BridgeChangeInfo: Table %d >= 7, skipping.", tableid);
+						for (sprite = 0; sprite < 32; sprite++) grf_load_dword(&buf);
+						continue;
 					}
+
+					if (bridge->sprite_table[tableid] == NULL) {
+						bridge->sprite_table[tableid] = malloc(32 * sizeof(**bridge->sprite_table));
+					}
+
+					for (sprite = 0; sprite < 32; sprite++)
+						bridge->sprite_table[tableid][sprite] = grf_load_dword(&buf);
 				}
 			}
 			break;