From d5bcaec67766721528323938373ecd1e551e34cd Mon Sep 17 00:00:00 2001 From: Darkvater Date: Tue, 2 May 2006 13:36:38 +0000 Subject: [PATCH] (svn r4675) - Backport from trunk (r4501): Fix: When, in a train that has multiple engines in front, the _first_ of those engines is sold, all the orders are copied to the second engine (to ensure "seamless" operation). The next_shared/prev_shared pointers where not updated correctly during this operation. --- train_cmd.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/train_cmd.c b/train_cmd.c index cfde2d7ea2..08dcd162f3 100644 --- a/train_cmd.c +++ b/train_cmd.c @@ -1288,6 +1288,16 @@ int32 CmdSellRailWagon(int x, int y, uint32 flags, uint32 p1, uint32 p2) new_f->current_order = first->current_order; new_f->cur_order_index = first->cur_order_index; new_f->orders = first->orders; + if (first->prev_shared != NULL) { + first->prev_shared->next_shared = new_f; + new_f->prev_shared = first->prev_shared; + } + + if (first->next_shared != NULL) { + first->next_shared->prev_shared = new_f; + new_f->next_shared = first->next_shared; + } + new_f->num_orders = first->num_orders; first->orders = NULL; // XXX - to not to delete the orders */ if (IsLocalPlayer()) ShowTrainViewWindow(new_f);