]> code.delx.au - pulseaudio/commitdiff
device-manager: Fix the freeing of the datum on prefer/defer.
authorColin Guthrie <cguthrie@mandriva.org>
Sun, 20 Sep 2009 13:39:41 +0000 (14:39 +0100)
committerColin Guthrie <cguthrie@mandriva.org>
Thu, 1 Oct 2009 08:08:30 +0000 (09:08 +0100)
Also fix a log typo

src/modules/module-device-manager.c

index f759e340fe38c24182b510ea210f1ec68b587c9d..75059f74ee47dadfb9ebe564a9831c89065af890 100644 (file)
@@ -366,10 +366,9 @@ static pa_hook_result_t source_new_hook_callback(pa_core *c, pa_source_new_data
     name = pa_sprintf_malloc("source:%s", new_data->name);
 
     if ((e = read_entry(u, name))) {
-
         if (strncmp(e->description, pa_proplist_gets(new_data->proplist, PA_PROP_DEVICE_DESCRIPTION), sizeof(e->description)) != 0) {
             /* NB, We cannot detect if we are a monitor here... this could mess things up a bit... */
-            pa_log_info("Restoring description for sink %s.", new_data->name);
+            pa_log_info("Restoring description for source %s.", new_data->name);
             pa_proplist_sets(new_data->proplist, PA_PROP_DEVICE_DESCRIPTION, e->description);
         }
 
@@ -644,8 +643,7 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
             goto fail;
 
         if ((e = read_entry(u, device)) && ENTRY_VERSION == e->version) {
-            pa_datum key;
-            pa_datum data;
+            pa_datum key, data;
             pa_bool_t done;
             char* prefix;
             uint32_t priority;
@@ -673,7 +671,6 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
                     struct entry *e2;
 
                     name = pa_xstrndup(key.data, key.size);
-                    pa_datum_free(&key);
 
                     if ((e2 = read_entry(u, name))) {
                         if (SUBCOMMAND_PREFER_DEVICE == command) {
@@ -697,12 +694,14 @@ static int extension_cb(pa_native_protocol *p, pa_module *m, pa_native_connectio
                             if (pa_database_set(u->database, &key, &data, FALSE))
                                 pa_log_warn("Could not save device");
                         }
+
                         pa_xfree(e2);
                     }
 
                     pa_xfree(name);
                 }
 
+                pa_datum_free(&key);
                 key = next_key;
             }