summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorred-001 <red-001@outlook.ie>2017-05-20 15:45:49 +0100
committerLoïc Blot <nerzhul@users.noreply.github.com>2017-05-20 16:45:49 +0200
commit772944daf69ab463568fbbf35a9011e4c8e6c44a (patch)
tree9cac5a5ed6523a07f11980b497642fd78b26453c
parent7e185068c4f9fb3253006a8d8a2aceea3f8000a1 (diff)
downloadminetest-772944daf69ab463568fbbf35a9011e4c8e6c44a.tar.gz
minetest-772944daf69ab463568fbbf35a9011e4c8e6c44a.tar.bz2
minetest-772944daf69ab463568fbbf35a9011e4c8e6c44a.zip
Fix CSM crash (#5779)
Caused by dc5bc6c and them made worse by 5ebf8f9
-rw-r--r--doc/client_lua_api.md2
-rw-r--r--src/script/common/c_content.cpp12
-rw-r--r--src/script/common/c_content.h2
-rw-r--r--src/script/cpp_api/s_client.cpp4
4 files changed, 13 insertions, 7 deletions
diff --git a/doc/client_lua_api.md b/doc/client_lua_api.md
index 2c0351a11..5b70c2a67 100644
--- a/doc/client_lua_api.md
+++ b/doc/client_lua_api.md
@@ -202,7 +202,7 @@ For helper functions see "Vector helpers".
### pointed_thing
* `{type="nothing"}`
* `{type="node", under=pos, above=pos}`
-* `{type="object", ref=ObjectRef}`
+* `{type="object", id=ObjectID}`
Flag Specifier Format
---------------------
diff --git a/src/script/common/c_content.cpp b/src/script/common/c_content.cpp
index 8696ad7cb..7eb1d094b 100644
--- a/src/script/common/c_content.cpp
+++ b/src/script/common/c_content.cpp
@@ -1441,7 +1441,7 @@ void read_json_value(lua_State *L, Json::Value &root, int index, u8 recursion)
lua_pop(L, 1); // Pop value
}
-void push_pointed_thing(lua_State *L, const PointedThing &pointed)
+void push_pointed_thing(lua_State *L, const PointedThing &pointed, bool csm)
{
lua_newtable(L);
if (pointed.type == POINTEDTHING_NODE) {
@@ -1454,8 +1454,14 @@ void push_pointed_thing(lua_State *L, const PointedThing &pointed)
} else if (pointed.type == POINTEDTHING_OBJECT) {
lua_pushstring(L, "object");
lua_setfield(L, -2, "type");
- push_objectRef(L, pointed.object_id);
- lua_setfield(L, -2, "ref");
+
+ if (csm) {
+ lua_pushinteger(L, pointed.object_id);
+ lua_setfield(L, -2, "id");
+ } else {
+ push_objectRef(L, pointed.object_id);
+ lua_setfield(L, -2, "ref");
+ }
} else {
lua_pushstring(L, "nothing");
lua_setfield(L, -2, "type");
diff --git a/src/script/common/c_content.h b/src/script/common/c_content.h
index 219c5eb7c..28d8b1e8c 100644
--- a/src/script/common/c_content.h
+++ b/src/script/common/c_content.h
@@ -164,7 +164,7 @@ bool push_json_value (lua_State *L,
void read_json_value (lua_State *L, Json::Value &root,
int index, u8 recursion = 0);
-void push_pointed_thing (lua_State *L, const PointedThing &pointed);
+void push_pointed_thing (lua_State *L, const PointedThing &pointed, bool csm = false);
void push_objectRef (lua_State *L, const u16 id);
diff --git a/src/script/cpp_api/s_client.cpp b/src/script/cpp_api/s_client.cpp
index d5ec52407..55d309fda 100644
--- a/src/script/cpp_api/s_client.cpp
+++ b/src/script/cpp_api/s_client.cpp
@@ -199,7 +199,7 @@ bool ScriptApiClient::on_placenode(const PointedThing &pointed, const ItemDefini
lua_getfield(L, -1, "registered_on_placenode");
// Push data
- push_pointed_thing(L, pointed);
+ push_pointed_thing(L, pointed, true);
push_item_definition(L, item);
// Call functions
@@ -217,7 +217,7 @@ bool ScriptApiClient::on_item_use(const ItemStack &item, const PointedThing &poi
// Push data
LuaItemStack::create(L, item);
- push_pointed_thing(L, pointed);
+ push_pointed_thing(L, pointed, true);
// Call functions
runCallbacks(2, RUN_CALLBACKS_MODE_OR);