pa_assert(core);
c = pa_xnew(pa_dbusiface_core, 1);
- c->core = core;
+ c->core = pa_core_ref(core);
c->subscription = pa_subscription_new(core, PA_SUBSCRIPTION_MASK_ALL, subscription_cb, c);
c->dbus_protocol = pa_dbus_protocol_get(core);
c->cards = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
pa_hook_slot_free(c->extension_unregistered_slot);
pa_dbus_protocol_unref(c->dbus_protocol);
+ pa_core_unref(c->core);
pa_xfree(c);
}
p = pa_xnew(pa_dbus_protocol, 1);
PA_REFCNT_INIT(p);
- p->core = c;
+ p->core = pa_core_ref(c);
p->objects = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
p->connections = pa_hashmap_new(pa_idxset_trivial_hash_func, pa_idxset_trivial_compare_func);
p->extensions = pa_idxset_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
pa_assert_se(pa_shared_remove(p->core, "dbus-protocol") >= 0);
+ pa_core_unref(p->core);
+
pa_xfree(p);
}