1
0
Fork 0

(svn r8101) -Fix (runknown): Plug potential memleaks when calling UnInitWindowSystem. The function directly deleted all windows instead of calling their respective deallocators which could then in turn any used memory.

release/0.6
Darkvater 2007-01-13 15:50:36 +00:00
parent 64c30ae737
commit e832a1d046
1 changed files with 11 additions and 6 deletions

View File

@ -902,14 +902,19 @@ void InitWindowSystem(void)
void UnInitWindowSystem(void)
{
Window **wz;
/* Delete all malloced widgets, and reset z-array */
restart_search:
/* Delete all windows, reset z-array.
*When we find the window to delete, we need to restart the search
* as deleting this window could cascade in deleting (many) others
* anywhere in the z-array. We call DeleteWindow() so that it can properly
* release own alloc'd memory, which otherwise could result in memleaks */
FOR_ALL_WINDOWS(wz) {
free((*wz)->widget);
(*wz)->widget = NULL;
(*wz)->widget_count = 0;
*wz = NULL;
DeleteWindow(*wz);
goto restart_search;
}
_last_z_window = _z_windows;
assert(_last_z_window == _z_windows);
}
void ResetWindowSystem(void)