From 42a842db291fa8fbf4f7bd7b74e510c6428b0c30 Mon Sep 17 00:00:00 2001 From: staphen Date: Wed, 20 Sep 2023 14:41:44 -0400 Subject: [PATCH] Fix edge cases for packing empty items --- Source/pack.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Source/pack.cpp b/Source/pack.cpp index 4baa6a9c2..85f37c978 100644 --- a/Source/pack.cpp +++ b/Source/pack.cpp @@ -254,6 +254,10 @@ void PackPlayer(PlayerPack &packed, const Player &player) void PackNetItem(const Item &item, ItemNetPack &packedItem) { + if (item.isEmpty()) { + packedItem.def.wIndx = static_cast<_item_indexes>(0xFFFF); + return; + } packedItem.def.wIndx = static_cast<_item_indexes>(SDL_SwapLE16(item.IDidx)); packedItem.def.wCI = SDL_SwapLE16(item._iCreateInfo); packedItem.def.dwSeed = SDL_SwapLE32(item._iSeed); @@ -332,6 +336,11 @@ void PackNetPlayer(PlayerNetPack &packed, const Player &player) void UnPackItem(const ItemPack &packedItem, const Player &player, Item &item, bool isHellfire) { + if (packedItem.idx == 0xFFFF) { + item.clear(); + return; + } + auto idx = static_cast<_item_indexes>(SDL_SwapLE16(packedItem.idx)); if (gbIsSpawn) {