diff options
| author | Lennart Poettering <lennart@poettering.net> | 2009-02-12 04:00:40 +0100 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2009-02-12 04:00:40 +0100 | 
| commit | 84666dbc88d6ace253bd4c5839dcde127ca02100 (patch) | |
| tree | 832d387d661c19dda7d75209522bdbbcabe781dd | |
| parent | a371306710b7267a2c9fa6ebece90e17ee7bff2e (diff) | |
properly free modargs object when init fails; don't abbreviate modargs in struct
| -rw-r--r-- | src/modules/bluetooth/module-bluetooth-discover.c | 22 | 
1 files changed, 14 insertions, 8 deletions
diff --git a/src/modules/bluetooth/module-bluetooth-discover.c b/src/modules/bluetooth/module-bluetooth-discover.c index 01340e16..e9740749 100644 --- a/src/modules/bluetooth/module-bluetooth-discover.c +++ b/src/modules/bluetooth/module-bluetooth-discover.c @@ -55,7 +55,7 @@ static const char* const valid_modargs[] = {  struct userdata {      pa_module *module; -    pa_modargs *ma; +    pa_modargs *modargs;      pa_core *core;      pa_dbus_connection *connection;      pa_bluetooth_discovery *discovery; @@ -77,11 +77,13 @@ static void load_module_for_device(struct userdata *u, pa_bluetooth_device *d, p              args = pa_sprintf_malloc("address=\"%s\" path=\"%s\"", d->address, d->path); -            if (pa_modargs_get_value(u->ma, "sco_sink", NULL) && -                pa_modargs_get_value(u->ma, "sco_source", NULL)) { +            if (pa_modargs_get_value(u->modargs, "sco_sink", NULL) && +                pa_modargs_get_value(u->modargs, "sco_source", NULL)) {                  char *tmp; -                tmp = pa_sprintf_malloc("%s sco_sink=\"%s\" sco_source=\"%s\"", args, pa_modargs_get_value(u->ma, "sco_sink", NULL), pa_modargs_get_value(u->ma, "sco_source", NULL)); +                tmp = pa_sprintf_malloc("%s sco_sink=\"%s\" sco_source=\"%s\"", args, +                                        pa_modargs_get_value(u->modargs, "sco_sink", NULL), +                                        pa_modargs_get_value(u->modargs, "sco_source", NULL));                  pa_xfree(args);                  args = tmp;              } @@ -127,7 +129,7 @@ static int setup_dbus(struct userdata *u) {  int pa__init(pa_module* m) {      struct userdata *u; -    pa_modargs *ma; +    pa_modargs *ma = NULL;      pa_bool_t async = FALSE;      pa_assert(m); @@ -145,7 +147,8 @@ int pa__init(pa_module* m) {      m->userdata = u = pa_xnew0(struct userdata, 1);      u->module = m;      u->core = m->core; -    u->ma = ma; +    u->modargs = ma; +    ma = NULL;      if (setup_dbus(u) < 0)          goto fail; @@ -161,6 +164,9 @@ int pa__init(pa_module* m) {  fail:      pa__done(m); +    if (ma) +        pa_modargs_free(ma); +      return -1;  } @@ -178,8 +184,8 @@ void pa__done(pa_module* m) {      if (u->connection)          pa_dbus_connection_unref(u->connection); -    if (u->ma) -        pa_modargs_free(u->ma); +    if (u->modargs) +        pa_modargs_free(u->modargs);      pa_xfree(u);  }  | 
