From b34904f4b5e9e2b8aecb09829edfa5578698b632 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 3 Nov 2016 16:56:58 +0100 Subject: Core/PacketIO: Fixed client crash with heirlooms Closes #17964 --- src/server/game/Entities/Object/Object.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/server/game/Entities/Object') diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 36cc68b3ace..047966d710c 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -815,7 +815,7 @@ void Object::BuildDynamicValuesUpdate(uint8 updateType, ByteBuffer* data, Player data->resize(data->size() + arrayBlockCount * sizeof(UpdateMask::BlockType)); for (std::size_t v = 0; v < values.size(); ++v) { - if (updateType == UPDATETYPE_VALUES ? _dynamicChangesArrayMask[index][v] : values[v]) + if (updateType != UPDATETYPE_VALUES || _dynamicChangesArrayMask[index][v]) { UpdateMask::SetUpdateBit(data->contents() + arrayMaskPos, v); *data << uint32(values[v]); @@ -1411,7 +1411,7 @@ void Object::SetDynamicValue(uint16 index, uint16 offset, uint32 value) if (_dynamicChangesArrayMask[index].size() <= offset) _dynamicChangesArrayMask[index].resize((offset / 32 + 1) * 32); - if (values[offset] != value) + if (values[offset] != value || changeType == UpdateMask::VALUE_AND_SIZE_CHANGED) { values[offset] = value; _dynamicChangesMask[index] = changeType; -- cgit v1.2.3