mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-23 07:40:14 +00:00
fix(combatlog): reset spell go parser output before decode
This commit is contained in:
parent
debc47b5cc
commit
3dba13bbd2
3 changed files with 9 additions and 0 deletions
|
|
@ -396,6 +396,9 @@ bool ClassicPacketParsers::parseSpellStart(network::Packet& packet, SpellStartDa
|
|||
// + uint8(missCount) + [PackedGuid(missTarget) + uint8(missType)] × missCount
|
||||
// ============================================================================
|
||||
bool ClassicPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& data) {
|
||||
// Always reset output to avoid stale targets when callers reuse buffers.
|
||||
data = SpellGoData{};
|
||||
|
||||
auto rem = [&]() { return packet.getSize() - packet.getReadPos(); };
|
||||
const size_t startPos = packet.getReadPos();
|
||||
if (rem() < 2) return false;
|
||||
|
|
|
|||
|
|
@ -1261,6 +1261,9 @@ bool TbcPacketParsers::parseSpellStart(network::Packet& packet, SpellStartData&
|
|||
// WotLK uses packed GUIDs and adds a timestamp (u32) after castFlags.
|
||||
// ============================================================================
|
||||
bool TbcPacketParsers::parseSpellGo(network::Packet& packet, SpellGoData& data) {
|
||||
// Always reset output to avoid stale targets when callers reuse buffers.
|
||||
data = SpellGoData{};
|
||||
|
||||
const size_t startPos = packet.getReadPos();
|
||||
// Fixed header before hit/miss lists:
|
||||
// casterGuid(u64) + casterUnit(u64) + castCount(u8) + spellId(u32) + castFlags(u32)
|
||||
|
|
|
|||
|
|
@ -3725,6 +3725,9 @@ bool SpellStartParser::parse(network::Packet& packet, SpellStartData& data) {
|
|||
}
|
||||
|
||||
bool SpellGoParser::parse(network::Packet& packet, SpellGoData& data) {
|
||||
// Always reset output to avoid stale targets when callers reuse buffers.
|
||||
data = SpellGoData{};
|
||||
|
||||
// Packed GUIDs are variable-length, so only require the smallest possible
|
||||
// shape up front: 2 GUID masks + fixed fields through missCount.
|
||||
if (packet.getSize() - packet.getReadPos() < 17) return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue