summaryrefslogtreecommitdiff
path: root/src/script/cpp_api/s_base.cpp
diff options
context:
space:
mode:
authorShadowNinja <shadowninja@minetest.net>2014-10-02 15:58:13 -0400
committerShadowNinja <shadowninja@minetest.net>2014-10-07 16:37:45 -0400
commit741df993ff33832d773536ed571c1a67ed93b5cb (patch)
tree1e6e3379873ce00df92a1c53d1e403e767b21a32 /src/script/cpp_api/s_base.cpp
parent28438bba27168289be59a26d3ae55e3f3658d8d3 (diff)
downloadminetest-741df993ff33832d773536ed571c1a67ed93b5cb.tar.gz
minetest-741df993ff33832d773536ed571c1a67ed93b5cb.tar.bz2
minetest-741df993ff33832d773536ed571c1a67ed93b5cb.zip
Fix object reference pushing functions when called from coroutines
Diffstat (limited to 'src/script/cpp_api/s_base.cpp')
-rw-r--r--src/script/cpp_api/s_base.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/script/cpp_api/s_base.cpp b/src/script/cpp_api/s_base.cpp
index d27506fbe..779819007 100644
--- a/src/script/cpp_api/s_base.cpp
+++ b/src/script/cpp_api/s_base.cpp
@@ -238,22 +238,18 @@ void ScriptApiBase::removeObjectReference(ServerActiveObject *cobj)
}
// Creates a new anonymous reference if cobj=NULL or id=0
-void ScriptApiBase::objectrefGetOrCreate(
+void ScriptApiBase::objectrefGetOrCreate(lua_State *L,
ServerActiveObject *cobj)
{
- lua_State *L = getStack();
-
if(cobj == NULL || cobj->getId() == 0){
ObjectRef::create(L, cobj);
} else {
- objectrefGet(cobj->getId());
+ objectrefGet(L, cobj->getId());
}
}
-void ScriptApiBase::objectrefGet(u16 id)
+void ScriptApiBase::objectrefGet(lua_State *L, u16 id)
{
- lua_State *L = getStack();
-
// Get core.object_refs[i]
lua_getglobal(L, "core");
lua_getfield(L, -1, "object_refs");
@@ -263,3 +259,4 @@ void ScriptApiBase::objectrefGet(u16 id)
lua_remove(L, -2); // object_refs
lua_remove(L, -2); // core
}
+