fix modargs memory leak
authorLennart Poettering <lennart@poettering.net>
Thu, 15 Jul 2004 17:33:56 +0000 (17:33 +0000)
committerLennart Poettering <lennart@poettering.net>
Thu, 15 Jul 2004 17:33:56 +0000 (17:33 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@68 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/module-oss-mmap.c
src/module-oss.c
src/module-protocol-stub.c
src/todo

index 020daa2..ceaae49 100644 (file)
@@ -306,11 +306,16 @@ int pa_module_init(struct pa_core *c, struct pa_module*m) {
     u->mainloop_source = c->mainloop->source_io(c->mainloop, u->fd, (u->source ? PA_MAINLOOP_API_IO_EVENT_INPUT : 0) | (u->sink ? PA_MAINLOOP_API_IO_EVENT_OUTPUT : 0), io_callback, u);
     assert(u->mainloop_source);
 
+    pa_modargs_free(ma);
+    
     return 0;
 
 fail:
     pa_module_done(c, m);
 
+    if (ma)
+        pa_modargs_free(ma);
+    
     return -1;
 }
 
index 5a6513c..48d1048 100644 (file)
@@ -229,6 +229,8 @@ int pa_module_init(struct pa_core *c, struct pa_module*m) {
     
     m->userdata = u;
 
+    pa_modargs_free(ma);
+
     return 0;
 
 fail:
index 4f82d4e..7338abc 100644 (file)
@@ -107,23 +107,30 @@ struct pa_socket_server *create_socket_server(struct pa_core *c, struct pa_modar
 
 int pa_module_init(struct pa_core *c, struct pa_module*m) {
     struct pa_socket_server *s;
-    struct pa_modargs *ma;
+    struct pa_modargs *ma = NULL;
+    int ret = -1;
     assert(c && m);
 
     if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
         fprintf(stderr, "Failed to parse module arguments\n");
-        return -1;
+        goto finish;
     }
 
     if (!(s = create_socket_server(c, ma)))
-        return -1;
+        goto finish;
 
     if (!(m->userdata = protocol_new(c, s, m, ma))) {
         pa_socket_server_free(s);
-        return -1;
+        goto finish;
     }
 
-    return 0;
+    ret = 0;
+
+finish:
+    if (ma)
+        pa_modargs_free(ma);
+
+    return ret;
 }
 
 void pa_module_done(struct pa_core *c, struct pa_module*m) {
index 2bec6f1..5e90dfd 100644 (file)
--- a/src/todo
+++ b/src/todo
@@ -1,5 +1,3 @@
-- modargs memory leak
-
 - clean secure directory handling (with username)
 
 - native library/protocol: