mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r27185) -Fix: prevent the compiler from optimizing an assignment away which caused GCC 5 to actually crash
This commit is contained in:
parent
20e20d6d2b
commit
06d7d63216
|
@ -1079,7 +1079,16 @@ Window::~Window()
|
||||||
free(this->nested_array); // Contents is released through deletion of #nested_root.
|
free(this->nested_array); // Contents is released through deletion of #nested_root.
|
||||||
delete this->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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue