# HG changeset patch # User rubidium # Date 1189975680 0 # Node ID a172d415e963c554c88e620485fbd021e5c9293a # Parent 7c1a4dd586ae992a648e3fd17b2ab478eb360f0f (svn r11120) -Codechange: remove the arbitrary limit of 10 articulated parts for a vehicle. diff -r 7c1a4dd586ae -r a172d415e963 src/articulated_vehicles.cpp --- a/src/articulated_vehicles.cpp Sun Sep 16 18:10:52 2007 +0000 +++ b/src/articulated_vehicles.cpp Sun Sep 16 20:48:00 2007 +0000 @@ -20,7 +20,7 @@ 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 @@ 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 -r 7c1a4dd586ae -r a172d415e963 src/roadveh_cmd.cpp --- a/src/roadveh_cmd.cpp Sun Sep 16 18:10:52 2007 +0000 +++ b/src/roadveh_cmd.cpp Sun Sep 16 20:48:00 2007 +0000 @@ -181,9 +181,9 @@ 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 -r 7c1a4dd586ae -r a172d415e963 src/train_cmd.cpp --- a/src/train_cmd.cpp Sun Sep 16 18:10:52 2007 +0000 +++ b/src/train_cmd.cpp Sun Sep 16 20:48:00 2007 +0000 @@ -517,9 +517,9 @@ 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 @@ 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);