diff --git a/src/openrct2/interface/Window.cpp b/src/openrct2/interface/Window.cpp index bac9f59342..302d920dd8 100644 --- a/src/openrct2/interface/Window.cpp +++ b/src/openrct2/interface/Window.cpp @@ -230,7 +230,10 @@ void window_close(rct_window* w) // Invalidate the window (area) window_invalidate(window.get()); - g_window_list.erase(itWindow); + // The window list may have been modified in the close event + itWindow = window_get_iterator(w); + if (itWindow != g_window_list.end()) + g_window_list.erase(itWindow); } template static void window_close_by_condition(_TPred pred, uint32_t flags = WindowCloseFlags::None)