(svn r13456) -Codechange: use AllocaM() macro instead of alloca() at most places
authorsmatz
Tue, 10 Jun 2008 21:59:22 +0000
changeset 10905 293ba816b703
parent 10895 f6c15675bb06
child 10911 dc3cb3bb6113
(svn r13456) -Codechange: use AllocaM() macro instead of alloca() at most places
src/core/alloc_func.hpp
src/newgrf.cpp
src/roadveh_cmd.cpp
src/station_cmd.cpp
src/train_cmd.cpp
src/win32.cpp
--- a/src/core/alloc_func.hpp	Tue Jun 10 17:47:55 2008 +0000
+++ b/src/core/alloc_func.hpp	Tue Jun 10 21:59:22 2008 +0000
@@ -90,4 +90,7 @@
 	return t_ptr;
 }
 
+/** alloca() has to be called in the parent function, so define AllocaM() as a macro */
+#define AllocaM(T, num_elements) ((T*)alloca((num_elements) * sizeof(T)))
+
 #endif /* ALLOC_FUNC_HPP */
--- a/src/newgrf.cpp	Tue Jun 10 17:47:55 2008 +0000
+++ b/src/newgrf.cpp	Tue Jun 10 21:59:22 2008 +0000
@@ -2946,7 +2946,7 @@
 		}
 	}
 
-	EngineID *engines = (EngineID*)alloca(idcount * sizeof(*engines));
+	EngineID *engines = AllocaM(EngineID, idcount);
 	for (uint i = 0; i < idcount; i++) {
 		engines[i] = GetNewEngine(_cur_grffile, (VehicleType)feature, grf_load_byte(&buf))->index;
 		if (!wagover) last_engines[i] = engines[i];
@@ -2996,7 +2996,7 @@
 
 static void CanalMapSpriteGroup(byte *buf, uint8 idcount)
 {
-	CanalFeature *cfs = (CanalFeature*)alloca(idcount * sizeof(*cfs));
+	CanalFeature *cfs = AllocaM(CanalFeature, idcount);
 	for (uint i = 0; i < idcount; i++) {
 		cfs[i] = (CanalFeature)grf_load_byte(&buf);
 	}
@@ -3022,7 +3022,7 @@
 
 static void StationMapSpriteGroup(byte *buf, uint8 idcount)
 {
-	uint8 *stations = (uint8*)alloca(idcount * sizeof(*stations));
+	uint8 *stations = AllocaM(uint8, idcount);
 	for (uint i = 0; i < idcount; i++) {
 		stations[i] = grf_load_byte(&buf);
 	}
@@ -3069,7 +3069,7 @@
 
 static void TownHouseMapSpriteGroup(byte *buf, uint8 idcount)
 {
-	uint8 *houses = (uint8*)alloca(idcount * sizeof(*houses));
+	uint8 *houses = AllocaM(uint8, idcount);
 	for (uint i = 0; i < idcount; i++) {
 		houses[i] = grf_load_byte(&buf);
 	}
@@ -3095,7 +3095,7 @@
 
 static void IndustryMapSpriteGroup(byte *buf, uint8 idcount)
 {
-	uint8 *industries = (uint8*)alloca(idcount * sizeof(*industries));
+	uint8 *industries = AllocaM(uint8, idcount);
 	for (uint i = 0; i < idcount; i++) {
 		industries[i] = grf_load_byte(&buf);
 	}
@@ -3121,7 +3121,7 @@
 
 static void IndustrytileMapSpriteGroup(byte *buf, uint8 idcount)
 {
-	uint8 *indtiles = (uint8*)alloca(idcount * sizeof(*indtiles));
+	uint8 *indtiles = AllocaM(uint8, idcount);
 	for (uint i = 0; i < idcount; i++) {
 		indtiles[i] = grf_load_byte(&buf);
 	}
@@ -3147,7 +3147,7 @@
 
 static void CargoMapSpriteGroup(byte *buf, uint8 idcount)
 {
-	CargoID *cargos = (CargoID*)alloca(idcount * sizeof(*cargos));
+	CargoID *cargos = AllocaM(CargoID, idcount);
 	for (uint i = 0; i < idcount; i++) {
 		cargos[i] = grf_load_byte(&buf);
 	}
--- a/src/roadveh_cmd.cpp	Tue Jun 10 17:47:55 2008 +0000
+++ b/src/roadveh_cmd.cpp	Tue Jun 10 21:59:22 2008 +0000
@@ -194,7 +194,7 @@
 	uint num_vehicles = 1 + CountArticulatedParts(p1, false);
 
 	/* Allow for the front and the articulated parts, plus one to "terminate" the list. */
-	Vehicle **vl = (Vehicle**)alloca(sizeof(*vl) * (num_vehicles + 1));
+	Vehicle **vl = AllocaM(Vehicle*, num_vehicles + 1);
 	memset(vl, 0, sizeof(*vl) * (num_vehicles + 1));
 
 	if (!Vehicle::AllocateList(vl, num_vehicles)) {
--- a/src/station_cmd.cpp	Tue Jun 10 17:47:55 2008 +0000
+++ b/src/station_cmd.cpp	Tue Jun 10 21:59:22 2008 +0000
@@ -1013,7 +1013,7 @@
 		tile_delta = (axis == AXIS_X ? TileDiffXY(1, 0) : TileDiffXY(0, 1));
 		track = AxisToTrack(axis);
 
-		layout_ptr = (byte*)alloca(numtracks * plat_len);
+		layout_ptr = AllocaM(byte, numtracks * plat_len);
 		GetStationLayout(layout_ptr, numtracks, plat_len, statspec);
 
 		numtracks_orig = numtracks;
--- a/src/train_cmd.cpp	Tue Jun 10 17:47:55 2008 +0000
+++ b/src/train_cmd.cpp	Tue Jun 10 21:59:22 2008 +0000
@@ -549,7 +549,7 @@
 		if (!IsCompatibleRail(rvi->railtype, GetRailType(tile))) return CMD_ERROR;
 
 		/* Allow for the wagon and the articulated parts, plus one to "terminate" the list. */
-		Vehicle **vl = (Vehicle**)alloca(sizeof(*vl) * (num_vehicles + 1));
+		Vehicle **vl = AllocaM(Vehicle*, num_vehicles + 1);
 		memset(vl, 0, sizeof(*vl) * (num_vehicles + 1));
 
 		if (!Vehicle::AllocateList(vl, num_vehicles))
@@ -716,7 +716,7 @@
 		if (!HasPowerOnRail(rvi->railtype, GetRailType(tile))) return CMD_ERROR;
 
 		/* Allow for the dual-heads and the articulated parts, plus one to "terminate" the list. */
-		Vehicle **vl = (Vehicle**)alloca(sizeof(*vl) * (num_vehicles + 1));
+		Vehicle **vl = AllocaM(Vehicle*, num_vehicles + 1);
 		memset(vl, 0, sizeof(*vl) * (num_vehicles + 1));
 
 		if (!Vehicle::AllocateList(vl, num_vehicles)) {
--- a/src/win32.cpp	Tue Jun 10 17:47:55 2008 +0000
+++ b/src/win32.cpp	Tue Jun 10 21:59:22 2008 +0000
@@ -474,7 +474,7 @@
 
 	_ident = GetTickCount(); // something pretty unique
 
-	MakeCRCTable((uint32*)alloca(256 * sizeof(uint32)));
+	MakeCRCTable(AllocaM(uint32, 256));
 	_crash_msg = output = (char*)LocalAlloc(LMEM_FIXED, 8192);
 
 	{