(svn r13456) -Codechange: use AllocaM() macro instead of alloca() at most places
--- 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);
{