]> Dogcows Code - chaz/openbox/blobdiff - openbox/session.c
if sm is disabled, there is nothing to shutdown, so don't go trying to free things...
[chaz/openbox] / openbox / session.c
index 54ce34ed4b64544c723f1bae50e0bf215a6b3f35..0ba1b3282d427b63625ad03226a013555374dca5 100644 (file)
@@ -25,7 +25,7 @@
 
 GList *session_saved_state;
 
-void session_startup(gint *argc, gchar ***argv) {}
+void session_startup(gint argc, gchar **argv) {}
 void session_shutdown() {}
 GList* session_state_find(ObClient *c) { return NULL; }
 gboolean session_state_cmp(ObSessionState *s, ObClient *c) { return FALSE; }
@@ -142,17 +142,25 @@ static void parse_args(gint *argc, gchar ***argv)
     }
 }
 
-void session_startup(gint *argc, gchar ***argv)
+void session_startup(gint argc, gchar **argv)
 {
 #define SM_ERR_LEN 1024
 
     SmcCallbacks cb;
     gchar sm_err[SM_ERR_LEN];
+    gint i;
 
-    parse_args(argc, argv);
+    sm_argc = argc;
+    sm_argv = g_new(gchar*, argc);
+    for (i = 0; i < argc; ++i)
+        sm_argv[i] = argv[i];
 
-    if (sm_disable)
+    parse_args(&sm_argc, &sm_argv);
+
+    if (sm_disable) {
+        g_free(sm_argv);
         return;
+    }
 
     sm_sessions_path = g_build_filename(parse_xdg_data_home_path(),
                                         "openbox", "sessions", NULL);
@@ -174,9 +182,6 @@ void session_startup(gint *argc, gchar ***argv)
         g_free(filename);
     }
 
-    sm_argc = *argc;
-    sm_argv = *argv;
-
     cb.save_yourself.callback = sm_save_yourself;
     cb.save_yourself.client_data = NULL;
 
@@ -254,9 +259,13 @@ void session_startup(gint *argc, gchar ***argv)
 
 void session_shutdown()
 {
+    if (sm_disable)
+        return;
+
     g_free(sm_sessions_path);
     g_free(save_file);
     g_free(sm_id);
+    g_free(sm_argv);
 
     if (sm_conn) {
         SmPropValue val_hint;
This page took 0.023633 seconds and 4 git commands to generate.