# HG changeset patch # User smatz # Date 1213135162 0 # Node ID 963e9e278125faa43558ba4fa3f865e22dbf9ce9 # Parent 4b8dae4806bf9a68a6a88f329bb717314145999c (svn r13456) -Codechange: use AllocaM() macro instead of alloca() at most places diff -r 4b8dae4806bf -r 963e9e278125 src/core/alloc_func.hpp --- 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 */ diff -r 4b8dae4806bf -r 963e9e278125 src/newgrf.cpp --- 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); } diff -r 4b8dae4806bf -r 963e9e278125 src/roadveh_cmd.cpp --- 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)) { diff -r 4b8dae4806bf -r 963e9e278125 src/station_cmd.cpp --- 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; diff -r 4b8dae4806bf -r 963e9e278125 src/train_cmd.cpp --- 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)) { diff -r 4b8dae4806bf -r 963e9e278125 src/win32.cpp --- 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); {