Keys: Fix crash when using unconfigured default:key
authoroctacian <enduffy2014@outlook.com>
Thu, 16 Mar 2017 05:03:52 +0000 (22:03 -0700)
committerparamat <mat.gregory@virginmedia.com>
Fri, 17 Mar 2017 05:50:50 +0000 (05:50 +0000)
Since meta secret field is blank on any keys (default:key) obtained using
/give, the game will crash if you attempt to use one of these. This follows
along the principle that the game should never have any reason to crash.

mods/default/functions.lua

index eeac0c2a5c115f9a3241a0c42274401717db85be..bf3749a807494972bf413b4a88b9bb50c7c909eb 100644 (file)
@@ -562,7 +562,12 @@ function default.can_interact_with_node(player, pos)
                local key_meta = item:get_meta()
 
                if key_meta:get_string("secret") == "" then
-                       key_meta:set_string("secret", minetest.parse_json(item:get_metadata()).secret)
+                       local key_oldmeta = item:get_metadata()
+                       if key_oldmeta == "" or not minetest.parse_json(key_oldmeta) then
+                               return false
+                       end
+
+                       key_meta:set_string("secret", minetest.parse_json(key_oldmeta).secret)
                        item:set_metadata("")
                end