return 1;
}
-static int Database_gc(lua_State* L) {
- Database* self = luaL_checkdatabase(L, 0);
+static int Database_close(lua_State* L) {
+ Database* self = luaL_checkdatabase(L, 1);
- if (self->db)
+ // Free database
+ if (self->db) {
loc_database_unref(self->db);
+ self->db = NULL;
+ }
+
+ return 0;
+}
+
+static int Database_gc(lua_State* L) {
+ Database* self = luaL_checkdatabase(L, 1);
+ // Free the object
free(self);
+
return 0;
}
static const struct luaL_Reg database_functions[] = {
{ "open", Database_open },
{ "lookup", Database_lookup },
+ { "__close", Database_close },
{ "__gc", Database_gc },
{ NULL, NULL },
};