summaryrefslogtreecommitdiff
path: root/Servers
diff options
context:
space:
mode:
Diffstat (limited to 'Servers')
-rw-r--r--Servers/WindowServer/WSClientConnection.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/Servers/WindowServer/WSClientConnection.cpp b/Servers/WindowServer/WSClientConnection.cpp
index 1dd139fd5f..6f79207a4e 100644
--- a/Servers/WindowServer/WSClientConnection.cpp
+++ b/Servers/WindowServer/WSClientConnection.cpp
@@ -50,6 +50,10 @@ WSClientConnection::WSClientConnection(CLocalSocket& client_socket, int client_i
WSClientConnection::~WSClientConnection()
{
+ // NOTE: Move the windows out of 'm_windows' before teardown. This prevents code
+ // that runs in response to window destruction from trying to iterate over
+ // a partially destroyed window list.
+ auto windows = move(m_windows);
s_connections->remove(client_id());
}