diff options
author | smatz <smatz@openttd.org> | 2011-02-08 18:29:30 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2011-02-08 18:29:30 +0000 |
commit | 364ef8e6e6342f8f777da561571422c8c57c402b (patch) | |
tree | faa555f8504b98667832b5530583d93aba633f85 | |
parent | b4273bcd35d4d0083dc9bd88a207283b4e3ba014 (diff) | |
download | openttd-364ef8e6e6342f8f777da561571422c8c57c402b.tar.xz |
(svn r22024) -Fix [FS#4468]: verify we can allocate an OrderList before we actually try to do so (Rubidium)
-rw-r--r-- | src/order_cmd.cpp | 4 | ||||
-rw-r--r-- | src/train_cmd.cpp | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index 3a6f59f20..4f97c782b 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -1389,6 +1389,10 @@ CommandCost CmdCloneOrder(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 } } + if (src->orders.list == NULL && !OrderList::CanAllocateItem()) { + return_cmd_error(STR_ERROR_NO_MORE_SPACE_FOR_ORDERS); + } + if (flags & DC_EXEC) { /* If the destination vehicle had a OrderList, destroy it */ DeleteVehicleOrders(dst); diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 61cd3ca5e..9746fd403 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -1332,6 +1332,10 @@ CommandCost CmdSellRailWagon(DoCommandFlag flags, Vehicle *t, uint16 data, uint3 CommandCost cost(EXPENSES_NEW_VEHICLES); for (Train *t = sell_head; t != NULL; t = t->Next()) cost.AddCost(-t->value); + if (first->orders.list == NULL && !OrderList::CanAllocateItem()) { + return_cmd_error(STR_ERROR_NO_MORE_SPACE_FOR_ORDERS); + } + /* do it? */ if (flags & DC_EXEC) { /* First normalise the sub types of the chain. */ |