fix xmms spawn bug
authorLennart Poettering <lennart@poettering.net>
Mon, 20 Sep 2004 19:37:28 +0000 (19:37 +0000)
committerLennart Poettering <lennart@poettering.net>
Mon, 20 Sep 2004 19:37:28 +0000 (19:37 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@224 fefdeb5f-60dc-0310-8127-8f9354f1896f

doc/todo
polyp/polyplib-context.c

index b857075..6665de9 100644 (file)
--- a/doc/todo
+++ b/doc/todo
@@ -1,9 +1,5 @@
 *** $Id$ ***
 
-*** 0.5 ***
-- xmms segfault when daemon not executable
-- update modinfo
-
 *** 0.6 ****
 - per-channel volume
 - unix socket directories include user name
index 8a7c719..32ce388 100644 (file)
@@ -388,7 +388,6 @@ static int default_server_is_running(void) {
 
     return 1;
 }
-
 static int context_connect_spawn(struct pa_context *c, const struct pa_spawn_api *api) {
     pid_t pid;
     int status, r;
@@ -416,26 +415,27 @@ static int context_connect_spawn(struct pa_context *c, const struct pa_spawn_api
         goto fail;
     } else if (!pid) {
         /* Child */
-        
+
         char t[128];
         const char *state = NULL;
 #define MAX_ARGS 64
         char *argv[MAX_ARGS+1];
-        int n = 0;
+        int n;
 
         close(fds[0]);
         
         if (api && api->atfork)
             api->atfork();
 
-        snprintf(t, sizeof(t), "%s=1", ENV_AUTOSPAWNED);
-        putenv(t);
+        /* Setup argv */
 
+        n = 0;
+        
         argv[n++] = c->conf->daemon_binary;
         argv[n++] = "--daemonize=yes";
         
         snprintf(t, sizeof(t), "-Lmodule-native-protocol-fd fd=%i", fds[1]);
-        argv[n++] = t;
+        argv[n++] = strdup(t);
 
         while (n < MAX_ARGS) {
             char *a;
@@ -449,7 +449,7 @@ static int context_connect_spawn(struct pa_context *c, const struct pa_spawn_api
         argv[n++] = NULL;
 
         execv(argv[0], argv);
-        exit(1);
+        _exit(1);
     } 
 
     /* Parent */