(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.
This commit is contained in:
Darkvater
2006-11-18 16:47:02 +00:00
parent aa97b61a27
commit b3c48c0a84
7 changed files with 298 additions and 230 deletions

View File

@@ -833,10 +833,12 @@ void DeleteNonVitalWindows(void);
void DeleteAllNonVitalWindows(void);
void HideVitalWindows(void);
void ShowVitalWindows(void);
Window **FindWindowZPosition(const Window *w);
/* window.c */
VARDEF Window _windows[25];
VARDEF Window *_last_window;
extern Window *_z_windows[];
extern Window **_last_z_window;
#define FOR_ALL_WINDOWS(wz) for (wz = _z_windows; wz != _last_z_window; wz++)
VARDEF Point _cursorpos_drag_start;