diff options
author | infirit <[email protected]> | 2014-11-07 12:59:59 +0100 |
---|---|---|
committer | infirit <[email protected]> | 2014-11-07 14:31:51 +0100 |
commit | acbe76ca6d576c397112c08b86bb9c301102f4ab (patch) | |
tree | c1b9e91e637363304f5d61d83289bd3b92f3efa3 /mate-session | |
parent | 50b6f0d9f4b8a47bb2886756cc337cd5ffe66338 (diff) | |
download | mate-session-manager-acbe76ca6d576c397112c08b86bb9c301102f4ab.tar.bz2 mate-session-manager-acbe76ca6d576c397112c08b86bb9c301102f4ab.tar.xz |
gsm: Do not assume XSMP clients set the SmProgram property
Since setting some properties can be skipped, there is no guarantee that
SmProgram is set.
Based on gnome-session commit: 35a9945ae1339297de2e0eeff543e876186dea6e
From: Vincent Untz <[email protected]>
Gnome bug: https://bugzilla.gnome.org/show_bug.cgi?id=590828
Diffstat (limited to 'mate-session')
-rw-r--r-- | mate-session/gsm-xsmp-client.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/mate-session/gsm-xsmp-client.c b/mate-session/gsm-xsmp-client.c index f8b78c2..759e2ab 100644 --- a/mate-session/gsm-xsmp-client.c +++ b/mate-session/gsm-xsmp-client.c @@ -524,6 +524,11 @@ get_desktop_file_path (GsmXSMPClient *client) /* If we can't get desktop file from GsmDesktopFile then we * try to find the desktop file from its program name */ prop = find_property (client, SmProgram, NULL); + + if (!prop) { + goto out; + } + program_name = prop->vals[0].value; dirs = gsm_util_get_autostart_dirs (); @@ -551,7 +556,16 @@ set_desktop_file_keys_from_client (GsmClient *client, char *comment; prop = find_property (GSM_XSMP_CLIENT (client), SmProgram, NULL); - name = g_strdup (prop->vals[0].value); + + if (prop) { + name = g_strdup (prop->vals[0].value); + } else { + /* It'd be really surprising to reach this code: if we're here, + * then the XSMP client already has set several XSMP + * properties. But it could still be that SmProgram is not set. + */ + name = g_strdup (_("Remembered Application")); + } comment = g_strdup_printf ("Client %s which was automatically saved", gsm_client_peek_startup_id (client)); @@ -639,6 +653,7 @@ xsmp_save (GsmClient *client, desktop_file_path = get_desktop_file_path (GSM_XSMP_CLIENT (client)); + /* this can accept desktop_file_path == NULL */ keyfile = create_client_key_file (client, desktop_file_path, &local_error); @@ -778,10 +793,12 @@ static char * xsmp_get_app_name (GsmClient *client) { SmProp *prop; - char *name; + char *name = NULL; prop = find_property (GSM_XSMP_CLIENT (client), SmProgram, NULL); - name = prop_to_command (prop); + if (prop) { + name = prop_to_command (prop); + } return name; } |