The returned type is the type of the top of stack value and
not the type of the checked argument.
[wt: this can be backported to 1.8, 1.7 and 1.6]
__LJMP unsigned int hlua_checkfunction(lua_State *L, int argno)
{
if (!lua_isfunction(L, argno)) {
- const char *msg = lua_pushfstring(L, "function expected, got %s", luaL_typename(L, -1));
+ const char *msg = lua_pushfstring(L, "function expected, got %s", luaL_typename(L, argno));
WILL_LJMP(luaL_argerror(L, argno, msg));
}
lua_pushvalue(L, argno);