[mutter] session: use initial workspace if no workspace set



commit fbd5a74a0b3b8af3a263021058b9b37c19fdc15e
Author: Olivier Fourdan <ofourdan redhat com>
Date:   Tue Jan 23 11:43:09 2018 +0100

    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

 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 ("    <sticky/>\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,
                        "    <workspace index=\"%d\"/>\n", n);
             }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]