diff options
Diffstat (limited to 'src/script/lua_api/l_server.cpp')
-rw-r--r-- | src/script/lua_api/l_server.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/script/lua_api/l_server.cpp b/src/script/lua_api/l_server.cpp index 76fe439eb..8d7f6512e 100644 --- a/src/script/lua_api/l_server.cpp +++ b/src/script/lua_api/l_server.cpp @@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "server.h" #include "environment.h" #include "player.h" +#include "log.h" // request_shutdown() int ModApiServer::l_request_shutdown(lua_State *L) @@ -449,6 +450,36 @@ int ModApiServer::l_notify_authentication_modified(lua_State *L) return 0; } +#ifndef NDEBUG +// cause_error(type_of_error) +int ModApiServer::l_cause_error(lua_State *L) +{ + NO_MAP_LOCK_REQUIRED; + std::string type_of_error = "none"; + if(lua_isstring(L, 1)) + type_of_error = lua_tostring(L, 1); + + errorstream << "Error handler test called, errortype=" << type_of_error << std::endl; + + if(type_of_error == "segv") { + volatile int* some_pointer = 0; + errorstream << "Cause a sigsegv now: " << (*some_pointer) << std::endl; + + } else if (type_of_error == "zerodivision") { + + unsigned int some_number = porting::getTimeS(); + unsigned int zerovalue = 0; + unsigned int result = some_number / zerovalue; + errorstream << "Well this shouldn't ever be shown: " << result << std::endl; + + } else if (type_of_error == "exception") { + throw BaseException("Errorhandler test fct called"); + } + + return 0; +} +#endif + void ModApiServer::Initialize(lua_State *L, int top) { API_FCT(request_shutdown); @@ -475,4 +506,8 @@ void ModApiServer::Initialize(lua_State *L, int top) API_FCT(kick_player); API_FCT(unban_player_or_ip); API_FCT(notify_authentication_modified); + +#ifndef NDEBUG + API_FCT(cause_error); +#endif } |