summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-09-16 20:48:00 +0000
committerrubidium <rubidium@openttd.org>2007-09-16 20:48:00 +0000
commita18f3f25a9edb2a6b349548fef8205fcd56ee542 (patch)
tree3b80369d0f59fffcf4e114f44cfe11145c5ad9b8
parent4a621fec6380c29103945fe25261dafd63b904f2 (diff)
downloadopenttd-a18f3f25a9edb2a6b349548fef8205fcd56ee542.tar.xz
(svn r11120) -Codechange: remove the arbitrary limit of 10 articulated parts for a vehicle.
-rw-r--r--src/articulated_vehicles.cpp4
-rw-r--r--src/roadveh_cmd.cpp6
-rw-r--r--src/train_cmd.cpp12
3 files changed, 11 insertions, 11 deletions
diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp
index ad83d6d5a..0f6aa8954 100644
--- a/src/articulated_vehicles.cpp
+++ b/src/articulated_vehicles.cpp
@@ -20,7 +20,7 @@ uint CountArticulatedParts(EngineID engine_type)
if (!HASBIT(EngInfo(engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return 0;
uint i;
- for (i = 1; i < 10; i++) {
+ for (i = 1; i < MAX_UVALUE(EngineID); i++) {
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, engine_type, NULL);
if (callback == CALLBACK_FAILED || callback == 0xFF) break;
}
@@ -35,7 +35,7 @@ void AddArticulatedParts(Vehicle **vl, VehicleType type)
if (!HASBIT(EngInfo(v->engine_type)->callbackmask, CBM_ARTIC_ENGINE)) return;
- for (uint i = 1; i < 10; i++) {
+ for (uint i = 1; i < MAX_UVALUE(EngineID); i++) {
uint16 callback = GetVehicleCallback(CBID_VEHICLE_ARTIC_ENGINE, i, 0, v->engine_type, v);
if (callback == CALLBACK_FAILED || callback == 0xFF) return;
diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp
index 7e46f9de6..9f7b31630 100644
--- a/src/roadveh_cmd.cpp
+++ b/src/roadveh_cmd.cpp
@@ -181,9 +181,9 @@ CommandCost CmdBuildRoadVeh(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
uint num_vehicles = 1 + CountArticulatedParts(p1);
- /* Allow for the front and up to 10 articulated parts. */
- Vehicle *vl[11];
- memset(&vl, 0, sizeof(vl));
+ /* Allow for the front and the articulated parts. */
+ Vehicle **vl = (Vehicle**)alloca(sizeof(*vl) * num_vehicles);
+ memset(vl, 0, sizeof(*vl) * num_vehicles);
if (!Vehicle::AllocateList(vl, num_vehicles)) {
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp
index a17f77acb..188695148 100644
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -517,9 +517,9 @@ static CommandCost CmdBuildRailWagon(EngineID engine, TileIndex tile, uint32 fla
uint num_vehicles = 1 + CountArticulatedParts(engine);
if (!(flags & DC_QUERY_COST)) {
- Vehicle *vl[11]; // Allow for wagon and upto 10 artic parts.
-
- memset(&vl, 0, sizeof(vl));
+ /* Allow for the wagon and the articulated parts. */
+ Vehicle **vl = (Vehicle**)alloca(sizeof(*vl) * num_vehicles);
+ memset(vl, 0, sizeof(*vl) * num_vehicles);
if (!Vehicle::AllocateList(vl, num_vehicles))
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);
@@ -685,9 +685,9 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32
CountArticulatedParts(p1);
if (!(flags & DC_QUERY_COST)) {
- Vehicle *vl[12]; // Allow for upto 10 artic parts and dual-heads
-
- memset(&vl, 0, sizeof(vl));
+ /* Allow for the dual-heads and the articulated parts. */
+ Vehicle **vl = (Vehicle**)alloca(sizeof(*vl) * num_vehicles);
+ memset(vl, 0, sizeof(*vl) * num_vehicles);
if (!Vehicle::AllocateList(vl, num_vehicles))
return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME);