{
GList *l;
GList *messages;
- EmpathyChat *chat = EMPATHY_CHAT (user_data);
- EmpathyChatPriv *priv = GET_PRIV (chat);
+ TpWeakRef *wr = user_data;
+ EmpathyChat *chat = tp_weak_ref_dup_object (wr);
+ EmpathyChatPriv *priv;
GError *error = NULL;
+ if (chat == NULL) {
+ tp_weak_ref_destroy (wr);
+ return;
+ }
+
+ priv = GET_PRIV (chat);
+
if (!tpl_log_manager_get_filtered_events_finish (TPL_LOG_MANAGER (manager),
result, &messages, &error)) {
DEBUG ("%s. Aborting.", error->message);
/* Turn back on scrolling */
empathy_chat_view_scroll (chat->view, TRUE);
+
+ g_object_unref (chat);
+ tp_weak_ref_destroy (wr);
}
static void
chat_log_filter,
chat,
got_filtered_messages_cb,
- (gpointer) chat);
+ tp_weak_ref_new (chat, NULL, NULL));
g_object_unref (target);
}