aboutsummaryrefslogtreecommitdiff
path: root/src/script/common
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/script/common/c_internal.cpp34
-rw-r--r--src/script/common/c_internal.h4
2 files changed, 5 insertions, 33 deletions
diff --git a/src/script/common/c_internal.cpp b/src/script/common/c_internal.cpp
index b349f9dd1..0b388e383 100644
--- a/src/script/common/c_internal.cpp
+++ b/src/script/common/c_internal.cpp
@@ -24,37 +24,9 @@ with this program; if not, write to the Free Software Foundation, Inc.,
std::string script_get_backtrace(lua_State *L)
{
- std::string s;
- lua_getglobal(L, "debug");
- if(lua_istable(L, -1)){
- lua_getfield(L, -1, "traceback");
- if(lua_isfunction(L, -1)) {
- lua_call(L, 0, 1);
- if(lua_isstring(L, -1)){
- s = lua_tostring(L, -1);
- }
- }
- lua_pop(L, 1);
- }
- lua_pop(L, 1);
- return s;
-}
-
-int script_error_handler(lua_State *L) {
- lua_getglobal(L, "debug");
- if (!lua_istable(L, -1)) {
- lua_pop(L, 1);
- return 1;
- }
- lua_getfield(L, -1, "traceback");
- if (!lua_isfunction(L, -1)) {
- lua_pop(L, 2);
- return 1;
- }
- lua_pushvalue(L, 1);
- lua_pushinteger(L, 2);
- lua_call(L, 2, 1);
- return 1;
+ lua_rawgeti(L, LUA_REGISTRYINDEX, CUSTOM_RIDX_BACKTRACE);
+ lua_call(L, 0, 1);
+ return luaL_checkstring(L, -1);
}
int script_exception_wrapper(lua_State *L, lua_CFunction f)
diff --git a/src/script/common/c_internal.h b/src/script/common/c_internal.h
index fc59b0e2e..b77f0a7c3 100644
--- a/src/script/common/c_internal.h
+++ b/src/script/common/c_internal.h
@@ -53,11 +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)
+#define CUSTOM_RIDX_BACKTRACE (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)))
+ (lua_rawgeti((L), LUA_REGISTRYINDEX, CUSTOM_RIDX_BACKTRACE), lua_gettop((L)))
#define PCALL_RESL(L, RES) do { \
int result_ = (RES); \