diff --git a/Classes/LinphoneUI/UIChatBubbleTextCell.m b/Classes/LinphoneUI/UIChatBubbleTextCell.m index aff777ac4..d1d42368a 100644 --- a/Classes/LinphoneUI/UIChatBubbleTextCell.m +++ b/Classes/LinphoneUI/UIChatBubbleTextCell.m @@ -119,16 +119,21 @@ } - (void)setChatMessageForCbs:(LinphoneChatMessage *)amessage { - if (!amessage || amessage == _message) { + if (amessage == _message) { return; } - + if (_message){ + linphone_chat_message_unref(_message); + } _message = amessage; - linphone_chat_message_set_user_data(_message, (void *)CFBridgingRetain(self)); - LinphoneChatMessageCbs *cbs = linphone_chat_message_get_callbacks(_message); - linphone_chat_message_cbs_set_msg_state_changed(cbs, message_status); - linphone_chat_message_cbs_set_participant_imdn_state_changed(cbs, participant_imdn_status); - linphone_chat_message_cbs_set_user_data(cbs, (void *)_event); + if (amessage){ + linphone_chat_message_ref(amessage); + linphone_chat_message_set_user_data(_message, (void *)CFBridgingRetain(self)); + LinphoneChatMessageCbs *cbs = linphone_chat_message_get_callbacks(_message); + linphone_chat_message_cbs_set_msg_state_changed(cbs, message_status); + linphone_chat_message_cbs_set_participant_imdn_state_changed(cbs, participant_imdn_status); + linphone_chat_message_cbs_set_user_data(cbs, (void *)_event); + } } + (NSString *)TextMessageForChat:(LinphoneChatMessage *)message {