aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2016-11-03 16:56:58 +0100
committerShauren <shauren.trinity@gmail.com>2016-11-03 16:56:58 +0100
commitb34904f4b5e9e2b8aecb09829edfa5578698b632 (patch)
tree76008b726a032669eaf590d378172c250f4fa7b4 /src/server/game/Entities/Object
parent1cd38a56505431cd54ea091977f4236ffe1d79d2 (diff)
Core/PacketIO: Fixed client crash with heirlooms
Closes #17964
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp4
1 files changed, 2 insertions, 2 deletions
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;