diff options
author | Dmitry Podgorny <pasis.ua@gmail.com> | 2021-07-20 22:13:13 +0300 |
---|---|---|
committer | Dmitry Podgorny <pasis.ua@gmail.com> | 2021-07-20 22:15:57 +0300 |
commit | 2e0adbd004ed950ec08a324a5a88e3e8cc462b86 (patch) | |
tree | 0862e7c7c3a7b9edb06a91dfdea3e76b406adeef | |
parent | 8be49e9e21ef3a1de1bfc7a8af83add7080cfe80 (diff) | |
download | profani-tty-2e0adbd004ed950ec08a324a5a88e3e8cc462b86.tar.gz |
chatwin: fix memory leak when load history
_chatwin_history() reassigns msg->plain without freeing previous string. This leads to memory leak. As a temporary solution, free replaced string. Fixes #1585.
-rw-r--r-- | src/ui/chatwin.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/ui/chatwin.c b/src/ui/chatwin.c index 47345709..4dfe50ed 100644 --- a/src/ui/chatwin.c +++ b/src/ui/chatwin.c @@ -519,7 +519,11 @@ _chatwin_history(ProfChatWin* chatwin, const char* const contact_barejid) while (curr) { ProfMessage* msg = curr->data; + char *msg_plain = msg->plain; msg->plain = plugins_pre_chat_message_display(msg->from_jid->barejid, msg->from_jid->resourcepart, msg->plain); + // This is dirty workaround for memory leak. We reassign msg->plain above so have to free previous object + // TODO: Make a better solution, for example, pass msg object to the function and it will replace msg->plain properly if needed. + free(msg_plain); win_print_history((ProfWin*)chatwin, msg); curr = g_slist_next(curr); } |