mirror of
https://github.com/EQEmu/Server.git
synced 2026-02-10 02:42:25 +00:00
Fix inventory overflow bug overwriting equipment slot 0
FindFirstFreeSlotThatFitsItem was returning 0 instead of INVALID_INDEX when no free slot was found. This caused items to be placed in slot 0 (charm equipment slot) when inventory was full, overwriting equipped items. Changes: - Fix FindFirstFreeSlotThatFitsItem to return INVALID_INDEX when no slot found - Add defensive check in PutItemInInventoryWithStacking to protect equipment slots 0-22 from being targeted for item placement
This commit is contained in:
parent
9d2cc213ce
commit
024abf74a8
@ -1839,7 +1839,7 @@ int16 EQ::InventoryProfile::FindFirstFreeSlotThatFitsItem(const EQ::ItemData *it
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return INVALID_INDEX;
|
||||
}
|
||||
|
||||
//This function has the same flaw as noted above
|
||||
|
||||
@ -4679,7 +4679,8 @@ bool Client::PutItemInInventoryWithStacking(EQ::ItemInstance *inst)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (free_id != INVALID_INDEX) {
|
||||
// Protect equipment slots (0-22) from being overwritten
|
||||
if (free_id != INVALID_INDEX && !EQ::ValueWithin(free_id, EQ::invslot::EQUIPMENT_BEGIN, EQ::invslot::EQUIPMENT_END)) {
|
||||
if (PutItemInInventory(free_id, *inst, true)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user