session: use initial workspace if no workspace set

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
This commit is contained in:
Olivier Fourdan 2018-01-23 11:43:09 +01:00
parent 58bb61e161
commit fbd5a74a0b

View File

@ -950,7 +950,10 @@ save_state (void)
fputs (" <sticky/>\n", outfile); fputs (" <sticky/>\n", outfile);
} else { } else {
int n; int n;
n = meta_workspace_index (window->workspace); if (window->workspace)
n = meta_workspace_index (window->workspace);
else
n = window->initial_workspace;
fprintf (outfile, fprintf (outfile,
" <workspace index=\"%d\"/>\n", n); " <workspace index=\"%d\"/>\n", n);
} }