diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c index cf50ae571..52c2915fc 100644 --- a/src/ui/chatwin.c +++ b/src/ui/chatwin.c @@ -402,9 +402,10 @@ chatwin_outgoing_msg(ProfChatWin* chatwin, const char* const message, const char plugins_post_chat_message_display(myjid->barejid, myjid->resourcepart, display_message); - // save last id and message for LMC in case if it's not LMC message - if (id && !replace_id) { - _chatwin_set_last_message(chatwin, id, display_message); + // save last id and message for LMC + if (id) { + const char* const save_id = replace_id ? replace_id : id; + _chatwin_set_last_message(chatwin, save_id, display_message); } } @@ -609,9 +610,13 @@ chatwin_db_history(ProfChatWin* chatwin, const char* start_time, const char* end static void _chatwin_set_last_message(ProfChatWin* chatwin, const char* const id, const char* const message) { - free(chatwin->last_message); - chatwin->last_message = strdup(message); + if (chatwin->last_message != message) { + free(chatwin->last_message); + chatwin->last_message = strdup(message); + } - free(chatwin->last_msg_id); - chatwin->last_msg_id = strdup(id); + if (chatwin->last_msg_id != id) { + free(chatwin->last_msg_id); + chatwin->last_msg_id = strdup(id); + } } diff --git a/src/ui/mucwin.c b/src/ui/mucwin.c index 60259f842..6e308a769 100644 --- a/src/ui/mucwin.c +++ b/src/ui/mucwin.c @@ -495,7 +495,8 @@ mucwin_outgoing_msg(ProfMucWin* mucwin, const char* const message, const char* c // save last id and message for LMC if (id) { - _mucwin_set_last_message(mucwin, id, message); + const char* const save_id = replace_id ? replace_id : id; + _mucwin_set_last_message(mucwin, save_id, message); } wins_add_quotes_ac(window, message, FALSE); @@ -932,11 +933,15 @@ mucwin_unset_message_char(ProfMucWin* mucwin) static void _mucwin_set_last_message(ProfMucWin* mucwin, const char* const id, const char* const message) { - free(mucwin->last_message); - mucwin->last_message = strdup(message); + if (mucwin->last_message != message) { + free(mucwin->last_message); + mucwin->last_message = strdup(message); + } - free(mucwin->last_msg_id); - mucwin->last_msg_id = strdup(id); + if (mucwin->last_msg_id != id) { + free(mucwin->last_msg_id); + mucwin->last_msg_id = strdup(id); + } } gchar*