| 24947 | } |
| 24948 | |
| 24949 | inline int default_traceback_error_handler(lua_State* L) { |
| 24950 | std::string msg = "An unknown error has triggered the default error handler"; |
| 24951 | optional<string_view> maybetopmsg = stack::unqualified_check_get<string_view>(L, 1, no_panic); |
| 24952 | if (maybetopmsg) { |
| 24953 | const string_view& topmsg = maybetopmsg.value(); |
| 24954 | msg.assign(topmsg.data(), topmsg.size()); |
| 24955 | } |
| 24956 | luaL_traceback(L, L, msg.c_str(), 1); |
| 24957 | optional<string_view> maybetraceback = stack::unqualified_check_get<string_view>(L, -1, no_panic); |
| 24958 | if (maybetraceback) { |
| 24959 | const string_view& traceback = maybetraceback.value(); |
| 24960 | msg.assign(traceback.data(), traceback.size()); |
| 24961 | } |
| 24962 | #if SOL_IS_ON(SOL_PRINT_ERRORS_I_) |
| 24963 | // std::cerr << "[sol3] An error occurred and was caught in traceback: "; |
| 24964 | // std::cerr << msg; |
| 24965 | // std::cerr << std::endl; |
| 24966 | #endif // Printing |
| 24967 | return stack::push(L, msg); |
| 24968 | } |
| 24969 | |
| 24970 | inline void set_default_state(lua_State* L, lua_CFunction panic_function = &default_at_panic, |
| 24971 | lua_CFunction traceback_function = c_call<decltype(&default_traceback_error_handler), &default_traceback_error_handler>, |
no test coverage detected