diff -r 69b4fce85ffa -r 2e4dd08b0131 libpurple/conversation.c --- a/libpurple/conversation.c Thu Jun 12 18:45:07 2014 +0200 +++ b/libpurple/conversation.c Thu Jun 12 19:03:54 2014 +0200 @@ -414,7 +414,8 @@ g_free(priv->title); priv->title = g_strdup(title); - g_object_notify_by_pspec(G_OBJECT(conv), properties[PROP_TITLE]); + if (!g_object_get_data(G_OBJECT(conv), "is-finalizing")) + g_object_notify_by_pspec(G_OBJECT(conv), properties[PROP_TITLE]); purple_conversation_update(conv, PURPLE_CONVERSATION_UPDATE_TITLE); } @@ -1133,6 +1134,12 @@ g_object_unref(account); } +static void +purple_conversation_dispose(GObject *object) +{ + g_object_set_data(object, "is-finalizing", GINT_TO_POINTER(TRUE)); +} + /* GObject finalize function */ static void purple_conversation_finalize(GObject *object) @@ -1175,6 +1182,7 @@ parent_class = g_type_class_peek_parent(klass); + obj_class->dispose = purple_conversation_dispose; obj_class->finalize = purple_conversation_finalize; obj_class->constructed = purple_conversation_constructed;