summaryrefslogtreecommitdiff
path: root/src/script/common/c_internal.h
diff options
context:
space:
mode:
authorKahrl <kahrl@gmx.net>2015-08-25 07:44:53 +0200
committerest31 <MTest31@outlook.com>2015-08-27 01:56:06 +0200
commit3304e1e517fb8aac008c4684e72a4b59b408414a (patch)
treeddcc820601c02d6783578b7accc68d35a2d312fc /src/script/common/c_internal.h
parent8658c8d9b5f30dc952eed29a19d619de9210474c (diff)
downloadminetest-3304e1e517fb8aac008c4684e72a4b59b408414a.tar.gz
minetest-3304e1e517fb8aac008c4684e72a4b59b408414a.tar.bz2
minetest-3304e1e517fb8aac008c4684e72a4b59b408414a.zip
Push error handler afresh each time lua_pcall is used
Fixes "double fault" / "error in error handling" messages (issue #1423) and instead shows a complete backtrace.
Diffstat (limited to 'src/script/common/c_internal.h')
-rw-r--r--src/script/common/c_internal.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/script/common/c_internal.h b/src/script/common/c_internal.h
index 80576b5e9..fc59b0e2e 100644
--- a/src/script/common/c_internal.h
+++ b/src/script/common/c_internal.h
@@ -53,7 +53,11 @@ extern "C" {
#define CUSTOM_RIDX_SCRIPTAPI (CUSTOM_RIDX_BASE)
#define CUSTOM_RIDX_GLOBALS_BACKUP (CUSTOM_RIDX_BASE + 1)
#define CUSTOM_RIDX_CURRENT_MOD_NAME (CUSTOM_RIDX_BASE + 2)
+#define CUSTOM_RIDX_ERROR_HANDLER (CUSTOM_RIDX_BASE + 3)
+// Pushes the error handler onto the stack and returns its index
+#define PUSH_ERROR_HANDLER(L) \
+ (lua_rawgeti((L), LUA_REGISTRYINDEX, CUSTOM_RIDX_ERROR_HANDLER), lua_gettop((L)))
#define PCALL_RESL(L, RES) do { \
int result_ = (RES); \