From 06d7d63216d7e5e2265353c7b45dbf6d7bafa3a7 Mon Sep 17 00:00:00 2001 From: rubidium Date: Fri, 13 Mar 2015 20:54:35 +0000 Subject: [PATCH] (svn r27185) -Fix: prevent the compiler from optimizing an assignment away which caused GCC 5 to actually crash --- src/window.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/window.cpp b/src/window.cpp index ff24dbd3b0..18e8f35881 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -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(this->window_class) = WC_INVALID; } /**