pidgin/pidgin

Parents 1f9db98e1e6c
Children 620d1adf91f2
Remove an unnecessary unref from purple_conversation_manager_register

Testing Done:
Connected to libera with the ircv3 protocol and verified the crash was fixed.

Reviewed at https://reviews.imfreedom.org/r/2177/
--- a/libpurple/purpleconversationmanager.c Thu Jan 05 21:11:42 2023 -0600
+++ b/libpurple/purpleconversationmanager.c Thu Jan 05 21:14:08 2023 -0600
@@ -214,16 +214,15 @@
g_return_val_if_fail(PURPLE_IS_CONVERSATION_MANAGER(manager), FALSE);
g_return_val_if_fail(PURPLE_IS_CONVERSATION(conversation), FALSE);
+ /* g_hash_table_insert calls the key_destroy_func if the key already exists
+ * which means we don't need to worry about the reference we're creating
+ * during the insertion.
+ */
registered = g_hash_table_insert(manager->conversations,
g_object_ref(conversation), NULL);
+
if(registered) {
g_signal_emit(manager, signals[SIG_REGISTERED], 0, conversation);
- } else {
- /* We need to clean up the ref we created above if the insert failed as
- * the key destroy function won't be called until the manager is
- * destroyed which will leave the conversation floating around.
- */
- g_object_unref(conversation);
}
return registered;