** This function can be called asynchronously (e.g. during a signal). ** Fields 'oldpc', 'basehookcount', and 'hookcount' (set by ** 'resethookcount') are for debug only, and it is no problem if they ** get arbitrary values (causes at most one wrong hook call). 'hookmask' ** is an atomic value. We assume that pointers are atomic too (e.g., gcc ** ensures that for all platforms where it runs). More
| 79 | ** always checked before being called (see 'luaD_hook'). |
| 80 | */ |
| 81 | LUA_API void lua_sethook (lua_State *L, lua_Hook func, int mask, int count) { |
| 82 | if (func == NULL || mask == 0) { /* turn off hooks? */ |
| 83 | mask = 0; |
| 84 | func = NULL; |
| 85 | } |
| 86 | if (isLua(L->ci)) |
| 87 | L->oldpc = L->ci->u.l.savedpc; |
| 88 | L->hook = func; |
| 89 | L->basehookcount = count; |
| 90 | resethookcount(L); |
| 91 | L->hookmask = cast_byte(mask); |
| 92 | } |
| 93 | |
| 94 | |
| 95 | LUA_API lua_Hook lua_gethook (lua_State *L) { |
no outgoing calls
no test coverage detected