From 64627817fcca52f20948c24b60ce192b218f6ce2 Mon Sep 17 00:00:00 2001
From: MetaDucky <metaducky AT gmail DOT com>
Date: Sun, 26 May 2013 11:27:06 +0200
Subject: [PATCH] Fix minetest.get_inventory(loc) always returning nil for
 "node" type loc

---
 src/script/lua_api/l_inventory.cpp | 30 +++++++++++++-----------------
 1 file changed, 13 insertions(+), 17 deletions(-)

diff --git a/src/script/lua_api/l_inventory.cpp b/src/script/lua_api/l_inventory.cpp
index 6dfb7a28c..1404c3c8a 100644
--- a/src/script/lua_api/l_inventory.cpp
+++ b/src/script/lua_api/l_inventory.cpp
@@ -416,9 +416,18 @@ int ModApiInventory::l_get_inventory(lua_State *L)
 
 	std::string type = checkstringfield(L, 1, "type");
 
-	if(type != "pos"){
-		NO_MAP_LOCK_REQUIRED;
+	if(type == "node"){
+		lua_getfield(L, 1, "pos");
+		v3s16 pos = check_v3s16(L, -1);
+		loc.setNodeMeta(pos);
 
+		if(getServer(L)->getInventory(loc) != NULL)
+			InvRef::create(L, loc);
+		else
+			lua_pushnil(L);
+		return 1;
+	} else {
+		NO_MAP_LOCK_REQUIRED;
 		if(type == "player"){
 			std::string name = checkstringfield(L, 1, "name");
 			loc.setPlayer(name);
@@ -431,22 +440,9 @@ int ModApiInventory::l_get_inventory(lua_State *L)
 			InvRef::create(L, loc);
 		else
 			lua_pushnil(L);
-
-		return 1;
-	}
-	else {
-		if(type == "node"){
-				lua_getfield(L, 1, "pos");
-				v3s16 pos = check_v3s16(L, -1);
-				loc.setNodeMeta(pos);
-		}
-		if(getServer(L)->getInventory(loc) != NULL)
-			InvRef::create(L, loc);
-		else
-			lua_pushnil(L);
-		return 1;
+		return 1;	
+		// END NO_MAP_LOCK_REQUIRED;
 	}
-
 }
 
 // create_detached_inventory_raw(name)
-- 
GitLab