libs/lmo: check for integer, not number in lmo.archive.get()
[project/luci.git] / libs / lmo / src / lmo_lualib.c
index 8d869aa..676f788 100644 (file)
@@ -49,7 +49,7 @@ static int lmo_L_open(lua_State *L) {
 static int lmo_L_hash(lua_State *L) {
        const char *data = luaL_checkstring(L, 1);
        uint32_t hash = sfh_hash(data, strlen(data));
-       lua_pushnumber(L, hash);
+       lua_pushinteger(L, (lua_Integer)hash);
        return 1;
 }
 
@@ -73,7 +73,7 @@ static int _lmo_lookup(lua_State *L, lmo_archive_t *ar, uint32_t hash) {
 
 static int lmo_L_get(lua_State *L) {
        lmo_archive_t **ar = luaL_checkudata(L, 1, LMO_ARCHIVE_META);
-       uint32_t hash = (uint32_t) luaL_checknumber(L, 2);
+       uint32_t hash = (uint32_t) luaL_checkinteger(L, 2);
        return _lmo_lookup(L, *ar, hash);
 }
 
@@ -140,17 +140,13 @@ static const luaL_reg R[] = {
 };
 
 LUALIB_API int luaopen_lmo(lua_State *L) {
-       luaL_newmetatable(L, LMO_LUALIB_META);
-       luaL_register(L, NULL, R);
-       lua_pushvalue(L, -1);
-       lua_setfield(L, -2, "__index");
-       lua_setglobal(L, LMO_LUALIB_META);
-
        luaL_newmetatable(L, LMO_ARCHIVE_META);
        luaL_register(L, NULL, M);
        lua_pushvalue(L, -1);
        lua_setfield(L, -2, "__index");
        lua_setglobal(L, LMO_ARCHIVE_META);
 
+       luaL_register(L, LMO_LUALIB_META, R);
+
        return 1;
 }