From 341941af852d2a07c59d4c17247b294026878b30 Mon Sep 17 00:00:00 2001 From: glx Date: Tue, 21 Jan 2020 20:59:01 +0100 Subject: [PATCH] Fix #7952: don't try to access destroyed QueryStrings --- src/window.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/window.cpp b/src/window.cpp index 93777d28f6..30fa4d3d12 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -389,7 +389,7 @@ QueryString *Window::GetQueryString(uint widnum) */ /* virtual */ Point Window::GetCaretPosition() const { - if (this->nested_focus != nullptr && this->nested_focus->type == WWT_EDITBOX) { + if (this->nested_focus != nullptr && this->nested_focus->type == WWT_EDITBOX && !this->querystrings.empty()) { return this->GetQueryString(this->nested_focus->index)->GetCaretPosition(this, this->nested_focus->index); } @@ -1094,6 +1094,9 @@ Window::~Window() /* We can't scroll the window when it's closed. */ if (_last_scroll_window == this) _last_scroll_window = nullptr; + /* Make sure we don't try to access non-existing query strings. */ + this->querystrings.clear(); + /* Make sure we don't try to access this window as the focused window when it doesn't exist anymore. */ if (_focused_window == this) { this->OnFocusLost();