diff --git a/src/lua/utils.c b/src/lua/utils.c index df2c0d7bea6d64678b43d2d7da65cec2a2273cc7..441fec631dd411c1ba0e9559430ac8fe0acc607a 100644 --- a/src/lua/utils.c +++ b/src/lua/utils.c @@ -768,7 +768,7 @@ luaL_convertint64(lua_State *L, int idx, bool unsignd, int64_t *result) *result = lua_tointeger(L, idx); return 0; case LUA_TCDATA: - cdata = luaL_checkcdata(L, 1, &ctypeid); + cdata = luaL_checkcdata(L, idx, &ctypeid); switch (ctypeid) { case CTID_CCHAR: case CTID_INT8: diff --git a/test/app-tap/module_api.c b/test/app-tap/module_api.c index f0fae084122c79d285d69a584f7e8ed2c73e81f5..fbea07e4e25f1addf848a17d4bff1f888c0f856d 100644 --- a/test/app-tap/module_api.c +++ b/test/app-tap/module_api.c @@ -162,6 +162,12 @@ test_touint64(lua_State *L) return 0; lua_pop(L, 1); + lua_pushliteral(L, "not a cdata"); + luaL_pushuint64(L, 18446744073709551615ULL); + if (luaL_touint64(L, -1) != 18446744073709551615ULL) + return 0; + lua_pop(L, 2); + lua_pushboolean(L, 1); return 1; } @@ -179,6 +185,12 @@ test_toint64(lua_State *L) return 0; lua_pop(L, 1); + lua_pushliteral(L, "not a cdata"); + luaL_pushuint64(L, 18446744073709551615ULL); + if (luaL_touint64(L, -1) != 18446744073709551615ULL) + return 0; + lua_pop(L, 2); + lua_pushboolean(L, 1); return 1; }