| 24160 | } |
| 24161 | |
| 24162 | inline int default_traceback_error_handler(lua_State* L) { |
| 24163 | std::string msg = "An unknown error has triggered the default error handler"; |
| 24164 | optional<string_view> maybetopmsg = stack::unqualified_check_get<string_view>(L, 1, no_panic); |
| 24165 | if (maybetopmsg) { |
| 24166 | const string_view& topmsg = maybetopmsg.value(); |
| 24167 | msg.assign(topmsg.data(), topmsg.size()); |
| 24168 | } |
| 24169 | luaL_traceback(L, L, msg.c_str(), 1); |
| 24170 | optional<string_view> maybetraceback = stack::unqualified_check_get<string_view>(L, -1, no_panic); |
| 24171 | if (maybetraceback) { |
| 24172 | const string_view& traceback = maybetraceback.value(); |
| 24173 | msg.assign(traceback.data(), traceback.size()); |
| 24174 | } |
| 24175 | #if defined(SOL_PRINT_ERRORS) && SOL_PRINT_ERRORS |
| 24176 | //std::cerr << "[sol3] An error occurred and was caught in traceback: "; |
| 24177 | //std::cerr << msg; |
| 24178 | //std::cerr << std::endl; |
| 24179 | #endif // Printing |
| 24180 | return stack::push(L, msg); |
| 24181 | } |
| 24182 | |
| 24183 | inline void set_default_state(lua_State* L, lua_CFunction panic_function = &default_at_panic, lua_CFunction traceback_function = c_call<decltype(&default_traceback_error_handler), &default_traceback_error_handler>, exception_handler_function exf = detail::default_exception_handler) { |
| 24184 | lua_atpanic(L, panic_function); |
no test coverage detected