summaryrefslogtreecommitdiff
path: root/desktop-shell
diff options
context:
space:
mode:
Diffstat (limited to 'desktop-shell')
-rw-r--r--desktop-shell/shell.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 487c3e73..05aa340d 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -5841,6 +5841,13 @@ handle_shell_client_destroy(struct wl_listener *listener, void *data)
if (sc->ping_timer)
wl_event_source_remove(sc->ping_timer);
+
+ /* Since we're about to free shell_client, we remove it from the
+ * head of the surface list so we don't use that freed list node
+ * during surface clean up later on.
+ */
+ wl_list_remove(&sc->surface_list);
+
free(sc);
}