(svn r27185) -Fix: prevent the compiler from optimizing an assignment away which caused GCC 5 to actually crash

This commit is contained in:
rubidium 2015-03-13 20:54:35 +00:00
parent 20e20d6d2b
commit 06d7d63216
1 changed files with 10 additions and 1 deletions

View File

@ -1079,7 +1079,16 @@ Window::~Window()
free(this->nested_array); // Contents is released through deletion of #nested_root.
delete this->nested_root;
this->window_class = WC_INVALID;
/*
* Make fairly sure that this is written, and not "optimized" away.
* The delete operator is overwritten to not delete it; the deletion
* happens at a later moment in time after the window has been
* removed from the list of windows to prevent issues with items
* being removed during the iteration as not one but more windows
* may be removed by a single call to ~Window by means of the
* DeleteChildWindows function.
*/
const_cast<volatile WindowClass &>(this->window_class) = WC_INVALID;
}
/**