Skip to content

Commit 55db69b

Browse files
authored
fix: Avoid possible crashes with getCorpseFromItem and playerRewardChestCollect (#514)
1 parent 244b4dd commit 55db69b

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/game/game.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5741,7 +5741,10 @@ std::shared_ptr<Item> Game::getItemToLoot(const std::shared_ptr<Player> &player,
57415741
std::shared_ptr<Container> Game::getCorpseFromItem(const std::shared_ptr<Item> &item, const Position &pos) {
57425742
std::shared_ptr<Container> corpse;
57435743
if (pos.x == 0xFFFF) {
5744-
corpse = item->getParent()->getContainer();
5744+
const auto &parent = item->getParent();
5745+
if (parent) {
5746+
corpse = parent->getContainer();
5747+
}
57455748
if (corpse && corpse->getID() == ITEM_BROWSEFIELD) {
57465749
corpse = item->getContainer();
57475750
browseField = true;
@@ -11125,7 +11128,15 @@ void Game::playerRewardChestCollect(uint32_t playerId, const Position &pos, uint
1112511128
return;
1112611129
}
1112711130

11128-
playerRewardChest->setParent(item->getContainer()->getParent()->getTile());
11131+
const auto &container = item->getContainer();
11132+
if (container) {
11133+
const auto &parent = container->getParent();
11134+
const auto &tile = parent ? parent->getTile() : nullptr;
11135+
if (tile) {
11136+
playerRewardChest->setParent(tile);
11137+
}
11138+
}
11139+
1112911140
for (const auto &[mapRewardId, reward] : player->rewardMap) {
1113011141
reward->setParent(playerRewardChest);
1113111142
}

0 commit comments

Comments
 (0)