diff options
author | STRWarrior <niels.breuker@hotmail.nl> | 2015-05-18 09:30:43 +0200 |
---|---|---|
committer | STRWarrior <niels.breuker@hotmail.nl> | 2015-05-18 09:30:43 +0200 |
commit | 007bac638bb732aad7ca63dd3e7a79f5dbb9d2b9 (patch) | |
tree | 8330aefdc4693303f3a944940a919d8bd2333bac /src/Bindings/LuaState.cpp | |
parent | Updated the defaults for the overworld world generator (diff) | |
parent | Merge pull request #2049 from mc-server/sapling-probability (diff) | |
download | cuberite-007bac638bb732aad7ca63dd3e7a79f5dbb9d2b9.tar cuberite-007bac638bb732aad7ca63dd3e7a79f5dbb9d2b9.tar.gz cuberite-007bac638bb732aad7ca63dd3e7a79f5dbb9d2b9.tar.bz2 cuberite-007bac638bb732aad7ca63dd3e7a79f5dbb9d2b9.tar.lz cuberite-007bac638bb732aad7ca63dd3e7a79f5dbb9d2b9.tar.xz cuberite-007bac638bb732aad7ca63dd3e7a79f5dbb9d2b9.tar.zst cuberite-007bac638bb732aad7ca63dd3e7a79f5dbb9d2b9.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Bindings/LuaState.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/Bindings/LuaState.cpp b/src/Bindings/LuaState.cpp index ccf812417..08c7e19d7 100644 --- a/src/Bindings/LuaState.cpp +++ b/src/Bindings/LuaState.cpp @@ -927,6 +927,9 @@ bool cLuaState::CheckParamTable(int a_StartParam, int a_EndParam) VERIFY(lua_getstack(m_LuaState, 0, &entry)); VERIFY(lua_getinfo (m_LuaState, "n", &entry)); AString ErrMsg = Printf("#ferror in function '%s'.", (entry.name != nullptr) ? entry.name : "?"); + + BreakIntoDebugger(m_LuaState); + tolua_error(m_LuaState, ErrMsg.c_str(), &tolua_err); return false; } // for i - Param @@ -1366,6 +1369,7 @@ int cLuaState::ReportFnCallErrors(lua_State * a_LuaState) { LOGWARNING("LUA: %s", lua_tostring(a_LuaState, -1)); LogStackTrace(a_LuaState, 1); + BreakIntoDebugger(a_LuaState); return 1; // We left the error message on the stack as the return value } @@ -1373,6 +1377,28 @@ int cLuaState::ReportFnCallErrors(lua_State * a_LuaState) +int cLuaState::BreakIntoDebugger(lua_State * a_LuaState) +{ + // Call the BreakIntoDebugger function, if available: + lua_getglobal(a_LuaState, "BreakIntoDebugger"); + if (!lua_isfunction(a_LuaState, -1)) + { + LOGD("LUA: BreakIntoDebugger() not found / not a function"); + lua_pop(a_LuaState, 1); + return 1; + } + lua_insert(a_LuaState, -2); // Copy the string that has been passed to us + LOGD("Calling BreakIntoDebugger()..."); + lua_call(a_LuaState, 1, 0); + LOGD("Returned from BreakIntoDebugger()."); + + return 0; +} + + + + + //////////////////////////////////////////////////////////////////////////////// // cLuaState::cRef: |