** Do a protected call with error handling. After 'lua_rotate', the ** stack will have ; so, the function passes ** 2 to 'finishpcall' to skip the 2 first values when returning results. */
| 464 | ** 2 to 'finishpcall' to skip the 2 first values when returning results. |
| 465 | */ |
| 466 | static int luaB_xpcall (lua_State *L) { |
| 467 | int status; |
| 468 | int n = lua_gettop(L); |
| 469 | luaL_checktype(L, 2, LUA_TFUNCTION); /* check error function */ |
| 470 | lua_pushboolean(L, 1); /* first result */ |
| 471 | lua_pushvalue(L, 1); /* function */ |
| 472 | lua_rotate(L, 3, 2); /* move them below function's arguments */ |
| 473 | status = lua_pcallk(L, n - 2, LUA_MULTRET, 2, 2, finishpcall); |
| 474 | return finishpcall(L, status, 2); |
| 475 | } |
| 476 | |
| 477 | |
| 478 | static int luaB_tostring (lua_State *L) { |
nothing calls this directly
no test coverage detected