From 8ac73cce3f9808c8fa48b280635104d9587c9c5a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 9 Sep 2015 14:51:14 +0300 Subject: Remove virtual method call from MessageOut constructor. --- src/net/eathena/chathandler.cpp | 9 +++++++-- src/net/eathena/messageout.cpp | 5 +---- src/net/eathena/messageout.h | 3 +-- 3 files changed, 9 insertions(+), 8 deletions(-) (limited to 'src/net/eathena') diff --git a/src/net/eathena/chathandler.cpp b/src/net/eathena/chathandler.cpp index c3f8bf039..da32981dd 100644 --- a/src/net/eathena/chathandler.cpp +++ b/src/net/eathena/chathandler.cpp @@ -106,13 +106,18 @@ void ChatHandler::sendRaw(const std::string &args) const if (pos != std::string::npos) { str = line.substr(0, pos); - outMsg = new MessageOut(static_cast(parseNumber(str))); + + const int16_t id = static_cast(parseNumber(str)); + outMsg = new MessageOut(id); + outMsg->writeInt16(id, "packet id"); line = line.substr(pos + 1); pos = line.find(" "); } else { - outMsg = new MessageOut(static_cast(parseNumber(line))); + const int16_t id = static_cast(parseNumber(line)); + outMsg = new MessageOut(id); + outMsg->writeInt16(id, "packet id"); delete outMsg; return; } diff --git a/src/net/eathena/messageout.cpp b/src/net/eathena/messageout.cpp index 8ecf8e863..0e42bec28 100644 --- a/src/net/eathena/messageout.cpp +++ b/src/net/eathena/messageout.cpp @@ -35,15 +35,12 @@ namespace EAthena { -MessageOut::MessageOut(const int16_t id, const char *const str) : +MessageOut::MessageOut(const int16_t id) : Net::MessageOut(id), mNetwork(EAthena::Network::instance()) { mNetwork->fixSendBuffer(); mData = mNetwork->mOutBuffer + static_cast(mNetwork->mOutSize); - - // +++ can be issue. call to virtual member - writeInt16(id, str); } void MessageOut::expand(const size_t bytes) diff --git a/src/net/eathena/messageout.h b/src/net/eathena/messageout.h index 4c0074767..8940ccc6a 100644 --- a/src/net/eathena/messageout.h +++ b/src/net/eathena/messageout.h @@ -43,8 +43,7 @@ class MessageOut final : public Net::MessageOut /** * Constructor. */ - explicit MessageOut(const int16_t id, - const char *const str = "packet id"); + explicit MessageOut(const int16_t id); A_DELETE_COPY(MessageOut) -- cgit v1.2.3-70-g09d2