]> Dogcows Code - chaz/openbox/blobdiff - openbox/session.c
make a copy of the argc and argv instead of modifying the real ones
[chaz/openbox] / openbox / session.c
index 54ce34ed4b64544c723f1bae50e0bf215a6b3f35..fa9ce48459ca6afa68fc8f9c9ad545c9d238aade 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;
+
+    sm_argc = argc;
+    sm_argv = g_new(gchar*, argc);
+    for (i = 0; i < argc; ++i)
+        sm_argv[i] = argv[i];
 
-    parse_args(argc, argv);
+    parse_args(&sm_argc, &sm_argv);
 
-    if (sm_disable)
+    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;
 
@@ -257,6 +262,7 @@ void session_shutdown()
     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.024097 seconds and 4 git commands to generate.