mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 17:54:48 +01:00
Core: Fix build and proper deinitialization in HandleTransmogrifyItems (by using vectors instead of new/delete)
This commit is contained in:
@@ -17147,20 +17147,20 @@ void Unit::SendMoveKnockBack(Player* player, float speedXY, float speedZ, float
|
||||
data << float(vsin);
|
||||
data << uint32(0);
|
||||
|
||||
data.WriteByteSeq(bytes[6]);
|
||||
data.WriteByteSeq(bytes[7]);
|
||||
data.WriteByteSeq(guid[6]);
|
||||
data.WriteByteSeq(guid[7]);
|
||||
|
||||
data << float(speedXY);
|
||||
|
||||
data.WriteByteSeq(bytes[4]);
|
||||
data.WriteByteSeq(bytes[5]);
|
||||
data.WriteByteSeq(bytes[3]);
|
||||
data.WriteByteSeq(guid[4]);
|
||||
data.WriteByteSeq(guid[5]);
|
||||
data.WriteByteSeq(guid[3]);
|
||||
|
||||
data << float(speedZ);
|
||||
data << float(vcos);
|
||||
|
||||
data.WriteByteSeq(bytes[2]);
|
||||
data.WriteByteSeq(bytes[0]);
|
||||
data.WriteByteSeq(guid[2]);
|
||||
data.WriteByteSeq(guid[0]);
|
||||
|
||||
player->GetSession()->SendPacket(&data);
|
||||
}
|
||||
|
||||
@@ -269,7 +269,7 @@ class Group
|
||||
void UpdatePlayerOutOfRange(Player* player);
|
||||
// ignore: GUID of player that will be ignored
|
||||
void BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int group = -1, uint64 ignore = 0);
|
||||
void BroadcastAddonMessagePacket(WorldPacket* packet, const std::string& prefix, bool ignorePlayersInBGRaid, int group, uint64 ignore);
|
||||
void BroadcastAddonMessagePacket(WorldPacket* packet, const std::string& prefix, bool ignorePlayersInBGRaid, int group = -1, uint64 ignore = 0);
|
||||
void BroadcastReadyCheck(WorldPacket* packet);
|
||||
void OfflineReadyCheck();
|
||||
|
||||
|
||||
@@ -509,46 +509,6 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
|
||||
}
|
||||
}
|
||||
|
||||
void WorldSession::HandleUnregisterAddonPrefixesOpcode(WorldPacket& /*recvPacket*/) // empty packet
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_UNREGISTER_ALL_ADDON_PREFIXES");
|
||||
|
||||
_registeredAddonPrefixes.clear();
|
||||
}
|
||||
|
||||
void WorldSession::HandleAddonRegisteredPrefixesOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ADDON_REGISTERED_PREFIXES");
|
||||
|
||||
// This is always sent after CMSG_UNREGISTER_ALL_ADDON_PREFIXES
|
||||
|
||||
uint32 count = recvPacket.ReadBits(25);
|
||||
|
||||
if (count > REGISTERED_ADDON_PREFIX_SOFTCAP)
|
||||
{
|
||||
// if we have hit the softcap (64) nothing should be filtered
|
||||
_filterAddonMessages = false;
|
||||
recvPacket.rfinish();
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<uint8> lengths(count);
|
||||
for (uint32 i = 0; i < count; ++i)
|
||||
lengths.push_back(recvPacket.ReadBits(5));
|
||||
|
||||
std::vector<std::string> prefixes(count);
|
||||
for (uint32 i = 0; i < count; ++i)
|
||||
_registeredAddonPrefixes.push_back(recvPacket.ReadString(lengths[i]));
|
||||
|
||||
if (_registeredAddonPrefixes.size() > REGISTERED_ADDON_PREFIX_SOFTCAP) // shouldn't happen
|
||||
{
|
||||
_filterAddonMessages = false;
|
||||
return;
|
||||
}
|
||||
|
||||
_filterAddonMessages = true;
|
||||
}
|
||||
|
||||
void WorldSession::HandleAddonMessagechatOpcode(WorldPacket& recvData)
|
||||
{
|
||||
Player* sender = GetPlayer();
|
||||
@@ -674,7 +634,7 @@ void WorldSession::HandleAddonMessagechatOpcode(WorldPacket& recvData)
|
||||
|
||||
WorldPacket data;
|
||||
ChatHandler::FillMessageData(&data, this, type, LANG_ADDON, "", 0, message.c_str(), NULL, prefix.c_str());
|
||||
group->BroadcastAddonMessagePacket(&data, true, prefix, -1, group->GetMemberGroup(sender->GetGUID()));
|
||||
group->BroadcastAddonMessagePacket(&data, prefix, true, -1, group->GetMemberGroup(sender->GetGUID()));
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
||||
@@ -1454,9 +1454,9 @@ void WorldSession::HandleTransmogrifyItems(WorldPacket& recvData)
|
||||
return;
|
||||
}
|
||||
|
||||
ObjectGuid* itemGuids = new ObjectGuid[count];
|
||||
uint32* newEntries = new uint32[count];
|
||||
uint32* slots = new uint32[count];
|
||||
std::vector<ObjectGuid> itemGuids(count, ObjectGuid(0));
|
||||
std::vector<uint32> newEntries(count, 0);
|
||||
std::vector<uint32> slots(count, 0);
|
||||
|
||||
for (uint8 i = 0; i < count; ++i)
|
||||
{
|
||||
@@ -1606,11 +1606,6 @@ void WorldSession::HandleTransmogrifyItems(WorldPacket& recvData)
|
||||
// ... unless client was modified
|
||||
if (cost) // 0 cost if reverting look
|
||||
player->ModifyMoney(-cost);
|
||||
|
||||
|
||||
delete[] itemGuids;
|
||||
delete[] newEntries;
|
||||
delete[] slots;
|
||||
}
|
||||
|
||||
void WorldSession::SendReforgeResult(bool success)
|
||||
|
||||
@@ -46,7 +46,7 @@ void InitOpcodes()
|
||||
DEFINE_OPCODE_HANDLER(CMSG_ACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAcceptTradeOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_ACTIVATETAXI, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_ACTIVATETAXIEXPRESS, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleActivateTaxiExpressOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_ADDON_REGISTERED_PREFIXES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::HandleAddonRegisteredPrefixesOpcode);
|
||||
DEFINE_OPCODE_HANDLER(CMSG_ADDON_REGISTERED_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddonRegisteredPrefixesOpcode);
|
||||
DEFINE_OPCODE_HANDLER(CMSG_ADD_FRIEND, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddFriendOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_ADD_IGNORE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAddIgnoreOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_ADD_VOICE_IGNORE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
@@ -514,7 +514,7 @@ void InitOpcodes()
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_TOTEM_DESTROYED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTotemDestroyed );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_TRAINER_BUY_SPELL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTrainerBuySpellOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_TRAINER_LIST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTrainerListOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_TRANSMOGRIFY_ITEMS, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleTransmogrifyItems );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_TRANSMOGRIFY_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogrifyItems );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_TURN_IN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTurnInPetitionOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_TUTORIAL_CLEAR, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTutorialClear );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_TUTORIAL_FLAG, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTutorialFlag );
|
||||
@@ -522,7 +522,7 @@ void InitOpcodes()
|
||||
DEFINE_OPCODE_HANDLER(CMSG_UNACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnlearnSkillOpcode );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_UNLEARN_SPECIALIZATION, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::HandleUnregisterAddonPrefixesOpcode);
|
||||
DEFINE_OPCODE_HANDLER(CMSG_UNREGISTER_ALL_ADDON_PREFIXES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnregisterAddonPrefixesOpcode);
|
||||
DEFINE_OPCODE_HANDLER(CMSG_UPDATE_ACCOUNT_DATA, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateAccountData );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_UPDATE_MISSILE_TRAJECTORY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateMissileTrajectory );
|
||||
//DEFINE_OPCODE_HANDLER(CMSG_UPDATE_PROJECTILE_POSITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUpdateProjectilePosition );
|
||||
|
||||
@@ -45,9 +45,6 @@
|
||||
#include "Transport.h"
|
||||
#include "WardenWin.h"
|
||||
#include "WardenMac.h"
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
bool MapSessionFilter::Process(WorldPacket* packet)
|
||||
{
|
||||
@@ -973,10 +970,48 @@ bool WorldSession::IsAddonRegistered(const std::string& prefix) const
|
||||
if (_registeredAddonPrefixes.empty())
|
||||
return false;
|
||||
|
||||
std::vector<std::string>::iterator itr = std::find(_registeredAddonPrefixes.begin(), _registeredAddonPrefixes.end(), prefix);
|
||||
std::vector<std::string>::const_iterator itr = std::find(_registeredAddonPrefixes.begin(), _registeredAddonPrefixes.end(), prefix);
|
||||
return itr != _registeredAddonPrefixes.end();
|
||||
}
|
||||
|
||||
void WorldSession::HandleUnregisterAddonPrefixesOpcode(WorldPacket& /*recvPacket*/) // empty packet
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_UNREGISTER_ALL_ADDON_PREFIXES");
|
||||
|
||||
_registeredAddonPrefixes.clear();
|
||||
}
|
||||
|
||||
void WorldSession::HandleAddonRegisteredPrefixesOpcode(WorldPacket& recvPacket)
|
||||
{
|
||||
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ADDON_REGISTERED_PREFIXES");
|
||||
|
||||
// This is always sent after CMSG_UNREGISTER_ALL_ADDON_PREFIXES
|
||||
|
||||
uint32 count = recvPacket.ReadBits(25);
|
||||
|
||||
if (count > REGISTERED_ADDON_PREFIX_SOFTCAP)
|
||||
{
|
||||
// if we have hit the softcap (64) nothing should be filtered
|
||||
_filterAddonMessages = false;
|
||||
recvPacket.rfinish();
|
||||
return;
|
||||
}
|
||||
|
||||
std::vector<uint8> lengths(count);
|
||||
for (uint32 i = 0; i < count; ++i)
|
||||
lengths[i] = recvPacket.ReadBits(5);
|
||||
|
||||
for (uint32 i = 0; i < count; ++i)
|
||||
_registeredAddonPrefixes.push_back(recvPacket.ReadString(lengths[i]));
|
||||
|
||||
if (_registeredAddonPrefixes.size() > REGISTERED_ADDON_PREFIX_SOFTCAP) // shouldn't happen
|
||||
{
|
||||
_filterAddonMessages = false;
|
||||
return;
|
||||
}
|
||||
|
||||
_filterAddonMessages = true;
|
||||
}
|
||||
|
||||
void WorldSession::SetPlayer(Player* player)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user