1.1 --- a/core/UserMessages.cpp Mon Feb 11 11:17:31 2013 -0500
1.2 +++ b/core/UserMessages.cpp Mon Feb 11 15:11:04 2013 -0500
1.3 @@ -502,14 +502,15 @@
1.4 int size = msg.ByteSize();
1.5 uint8 *data = (uint8 *)stackalloc(size);
1.6 msg.SerializePartialToArray(data, size);
1.7 - m_InterceptBuffer->ParseFromArray(data, size);
1.8 + m_InterceptBuffer->ParsePartialFromArray(data, size);
1.9 }
1.10 else
1.11 {
1.12 m_FakeEngineBuffer = &const_cast<protobuf::Message &>(msg);
1.13 - OnStartMessage_Post(&filter, msg_type, g_Cstrike15UsermessageHelpers.GetName(msg_type));
1.14 }
1.15
1.16 + OnStartMessage_Post(&filter, msg_type, g_Cstrike15UsermessageHelpers.GetName(msg_type));
1.17 +
1.18 OnMessageEnd_Pre();
1.19 if (m_FakeMetaRes == MRES_SUPERCEDE)
1.20 RETURN_META(MRES_SUPERCEDE);
1.21 @@ -593,7 +594,10 @@
1.22 }
1.23
1.24 #ifdef USE_PROTOBUF_USERMESSAGES
1.25 - m_OrigBuffer = m_FakeEngineBuffer;
1.26 + if (m_FakeMetaRes == MRES_SUPERCEDE)
1.27 + m_OrigBuffer = m_InterceptBuffer;
1.28 + else
1.29 + m_OrigBuffer = m_FakeEngineBuffer;
1.30 #else
1.31 m_OrigBuffer = META_RESULT_ORIG_RET(bf_write *);
1.32 #endif
1.33 @@ -743,8 +747,6 @@
1.34 {
1.35 #if SOURCE_ENGINE == SE_CSGO
1.36 ENGINE_CALL(SendUserMessage)(static_cast<IRecipientFilter &>(*m_CurRecFilter), m_CurId, *m_InterceptBuffer);
1.37 - delete m_InterceptBuffer;
1.38 - m_InterceptBuffer = NULL;
1.39 #else
1.40 bf_write *engine_bfw;
1.41 #if SOURCE_ENGINE >= SE_LEFT4DEAD
1.42 @@ -764,7 +766,7 @@
1.43 uint8 *data = (uint8 *)stackalloc(size);
1.44 m_OrigBuffer->SerializePartialToArray(data, size);
1.45 protobuf::Message *pTempMsg = g_Cstrike15UsermessageHelpers.GetPrototype(m_CurId)->New();
1.46 - pTempMsg->ParseFromArray(data, size);
1.47 + pTempMsg->ParsePartialFromArray(data, size);
1.48 #else
1.49 bf_write *pTempMsg = m_OrigBuffer;
1.50 #endif