From 05f567086b72f05f0995f5ea4e282a3ce8d0bb15 Mon Sep 17 00:00:00 2001 From: "Igor V. Kovalenko" Date: Tue, 13 Oct 2020 09:36:50 +0300 Subject: module-stream-restore: check if dbus entry exists in dbus_entries map before creating it If write_entry fails to store new entry in database, next time we can try creating new entry again. With DBUS enabled this will create another dbus entry for same name leading to crash inserting duplicate into dbus_entries map. Fix this by checking if dbus entry exists in dbus_entries map before creating it. Fixes: #974 --- src/modules/module-stream-restore.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/modules/module-stream-restore.c b/src/modules/module-stream-restore.c index d29f079a..7144a664 100644 --- a/src/modules/module-stream-restore.c +++ b/src/modules/module-stream-restore.c @@ -1448,13 +1448,11 @@ static void subscribe_callback(pa_core *c, pa_subscription_event_type_t t, uint3 } #ifdef HAVE_DBUS - if (created_new_entry) { + if (!(de = pa_hashmap_get(u->dbus_entries, name))) { de = dbus_entry_new(u, name); pa_assert_se(pa_hashmap_put(u->dbus_entries, de->entry_name, de) == 0); send_new_entry_signal(de); } else { - pa_assert_se(de = pa_hashmap_get(u->dbus_entries, name)); - if (device_updated) send_device_updated_signal(de, entry); if (volume_updated) -- cgit v1.2.1