]> code.delx.au - pulseaudio/commitdiff
don't hit an assert in the client if posix shm is not available
authorLennart Poettering <lennart@poettering.net>
Wed, 6 Sep 2006 22:19:54 +0000 (22:19 +0000)
committerLennart Poettering <lennart@poettering.net>
Wed, 6 Sep 2006 22:19:54 +0000 (22:19 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1376 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/pulse/context.c

index b700657b4524d47c14e3217e2c5cd4060a5d13d8..a458c6b1082c801985525bf2e8ecaa33f7e3f8ff 100644 (file)
@@ -98,6 +98,8 @@ static void unlock_autospawn_lock_file(pa_context *c) {
     }
 }
 
+static void context_free(pa_context *c);
+
 pa_context *pa_context_new(pa_mainloop_api *mainloop, const char *name) {
     pa_context *c;
     
@@ -148,7 +150,16 @@ pa_context *pa_context_new(pa_mainloop_api *mainloop, const char *name) {
 #endif
     pa_client_conf_env(c->conf);
 
-    c->mempool = pa_mempool_new(!c->conf->disable_shm);
+    if (!(c->mempool = pa_mempool_new(!c->conf->disable_shm))) {
+
+        if (!c->conf->disable_shm)
+            c->mempool = pa_mempool_new(0);
+
+        if (!c->mempool) {
+            context_free(c);
+            return NULL;
+        }
+    }
 
     return c;
 }
@@ -178,7 +189,8 @@ static void context_free(pa_context *c) {
     if (c->playback_streams)
         pa_dynarray_free(c->playback_streams, NULL, NULL);
 
-    pa_mempool_free(c->mempool);
+    if (c->mempool)
+        pa_mempool_free(c->mempool);
 
     if (c->conf)
         pa_client_conf_free(c->conf);