From 2dcfece72b723a1f3952c37c3255724a07a8c4dc Mon Sep 17 00:00:00 2001 From: Unnamed Date: Wed, 5 Dec 2018 10:59:48 +0000 Subject: [PATCH] Fix memory leak in DispatchUserMessage --- src/hooks/DispatchUserMessage.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/hooks/DispatchUserMessage.cpp b/src/hooks/DispatchUserMessage.cpp index 3ddc289b..b075d858 100644 --- a/src/hooks/DispatchUserMessage.cpp +++ b/src/hooks/DispatchUserMessage.cpp @@ -99,6 +99,8 @@ DEFINE_HOOKED_METHOD(DispatchUserMessage, bool, void *this_, int type, g_IEngine->ClientCmd_Unrestricted("cat_disconnect;wait 100;cat_mm_join"); buf.Seek(0); } + + std::string cleaned_data; if (type == 4) { loop_index = 0; @@ -106,7 +108,6 @@ DEFINE_HOOKED_METHOD(DispatchUserMessage, bool, void *this_, int type, if (s < 256) { std::string data; - std::string cleaned_data; for (i = 0; i < s; i++) { char to_app = buf.ReadByte(); @@ -253,15 +254,7 @@ DEFINE_HOOKED_METHOD(DispatchUserMessage, bool, void *this_, int type, } } chatlog::LogMessage(cleaned_data[0], message); - char *cleaned_data_c = new char[cleaned_data.size()+1]; - int idx = 0; - for (char i : cleaned_data) - { - cleaned_data_c[idx] = i; - idx++; - } - cleaned_data_c[cleaned_data.size()] = '\0'; - buf = bf_read(cleaned_data_c, cleaned_data.size()); + buf = bf_read(cleaned_data.c_str(), cleaned_data.size()); buf.Seek(0); } }