diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 7f11d413fb3467..e200aaf3d82dcd 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -110,11 +110,12 @@ void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket) if (!_player->CanExecutePendingSpellCastRequest(spellInfo)) if (_player->CanRequestSpellCast(spellInfo)) { - recvPacket.rpos(0); // Reset read position to the start of the buffer. + WorldPacket packetCopy(recvPacket); // Copy the packet + packetCopy.rpos(0); // Reset read position to the start of the buffer. _player->SpellQueue.emplace_back( spellId, spellInfo->GetCategory(), - std::move(recvPacket), // Move ownership of recvPacket + std::move(packetCopy), // Move ownership of copied packet true // itemCast ); return; @@ -424,11 +425,12 @@ void WorldSession::HandleCastSpellOpcode(WorldPacket& recvPacket) { if (_player->CanRequestSpellCast(spellInfo)) { - recvPacket.rpos(0); // Reset read position to the start of the buffer. + WorldPacket packetCopy(recvPacket); // Copy the packet + packetCopy.rpos(0); // Reset read position to the start of the buffer. _player->SpellQueue.emplace_back( spellId, spellInfo->GetCategory(), - std::move(recvPacket) // Move ownership of recvPacket + std::move(packetCopy) // Move ownership of copied packet ); return; }