From d99a033fd692546a29cfd4728dbbc5d26ac5c37f Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 5 May 2018 22:37:07 +0200 Subject: Fix builtin inventory list crash when size = 0 (#7297) --- src/server.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/server.cpp') diff --git a/src/server.cpp b/src/server.cpp index 9d4c13325..f151d09f0 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -2685,6 +2685,10 @@ void Server::DeleteClient(session_t peer_id, ClientDeletionReason reason) void Server::UpdateCrafting(RemotePlayer *player) { + InventoryList *clist = player->inventory.getList("craft"); + if (!clist || clist->getSize() == 0) + return; + // Get a preview for crafting ItemStack preview; InventoryLocation loc; @@ -2692,13 +2696,13 @@ void Server::UpdateCrafting(RemotePlayer *player) std::vector output_replacements; getCraftingResult(&player->inventory, preview, output_replacements, false, this); m_env->getScriptIface()->item_CraftPredict(preview, player->getPlayerSAO(), - (&player->inventory)->getList("craft"), loc); + clist, loc); - // Put the new preview in InventoryList *plist = player->inventory.getList("craftpreview"); - sanity_check(plist); - sanity_check(plist->getSize() >= 1); - plist->changeItem(0, preview); + if (plist && plist->getSize() >= 1) { + // Put the new preview in + plist->changeItem(0, preview); + } } void Server::handleChatInterfaceEvent(ChatEvent *evt) -- cgit v1.2.3