From c01c294afbcd9e75213be8ff569320889c1b793a Mon Sep 17 00:00:00 2001 From: Darkvater Date: Sat, 18 Nov 2006 16:47:02 +0000 Subject: (svn r7205) -Fix [FS#350, SF#1560913]: Window allocation and deletion messed with the actual window structs inside their array, and possibly invalidating pointers higher up. Meaning that any function called within an wndproc could cause unknown/invalid pointers once control was returned to this function. Solved by the introduction of an extra abstraction layer, an array of z-window positions that is only concerned with the pointers. --- train_gui.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'train_gui.c') diff --git a/train_gui.c b/train_gui.c index 3c00d0d6e..ffb36ea4e 100644 --- a/train_gui.c +++ b/train_gui.c @@ -664,8 +664,7 @@ void ShowBuildTrainWindow(TileIndex tile) DeleteWindowById(WC_BUILD_VEHICLE, tile); - w = AllocateWindowDesc(&_new_rail_vehicle_desc); - w->window_number = tile; + w = AllocateWindowDescFront(&_new_rail_vehicle_desc, tile); w->vscroll.cap = 8; w->widget[BUILD_TRAIN_WIDGET_LIST].data = (w->vscroll.cap << 8) + 1; -- cgit v1.2.3-54-g00ecf