From fbd5a74a0b3b8af3a263021058b9b37c19fdc15e Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Tue, 23 Jan 2018 11:43:09 +0100 Subject: [PATCH] session: use initial workspace if no workspace set MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Having “on_all_workspaces_requested” FALSE on a window does not imply a workspace is set. If the X11 window is placed on a secondary monitor while workspaces applies on primary monitor only (“workspaces-only-on-primary” set) then “on_all_workspaces_requested” is FALSE while “on_all_workspaces“ is TRUE and the associated workspace is NULL, leading to a crash when saving the gnome-shell/mutter session. So if no workspace is set, use the “initial_workspace” instead to avoid a NULL pointer dereference. https://bugzilla.gnome.org/show_bug.cgi?id=792818 --- src/x11/session.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/x11/session.c b/src/x11/session.c index af64270a6..8b2a89f1c 100644 --- a/src/x11/session.c +++ b/src/x11/session.c @@ -950,7 +950,10 @@ save_state (void) fputs (" \n", outfile); } else { int n; - n = meta_workspace_index (window->workspace); + if (window->workspace) + n = meta_workspace_index (window->workspace); + else + n = window->initial_workspace; fprintf (outfile, " \n", n); }