(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:
6
window.h
6
window.h
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user