diff options
author | the lemons <citrons@mondecitronne.com> | 2022-12-06 02:14:32 -0600 |
---|---|---|
committer | the lemons <citrons@mondecitronne.com> | 2022-12-06 02:14:32 -0600 |
commit | 442acbe4ea0769d81d39c93572b859fb145b17f4 (patch) | |
tree | c7f01e4dc95ed865c5413de780e2438b4b13904a | |
parent | 4384b3d0bdeca1fa3df5bb8a7cc13cf043b8c3a6 (diff) |
asserr (assert not error) macro
-rw-r--r-- | lmdb.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -20,6 +20,11 @@ struct handle { return 3; \ } \ } while (0) +#define asserr(e) \ + do { \ + int __res = (e); if (__res != 0) \ + luaL_error(L, "%s", mdb_strerror(__res)); \ + } while (0) static void check_valid(lua_State *L, struct handle *h) { if (h->closed) luaL_error(L, "attempt to use expired handle"); @@ -248,7 +253,7 @@ static int db_get(lua_State *L) { if (result == MDB_NOTFOUND) { lua_pushnil(L); return 1; - } else if (result != 0) luaL_error(L, "%s", mdb_strerror(result)); + } else asserr(result); fromval(L, data); return 1; } @@ -264,12 +269,10 @@ static int db_put(lua_State *L) { lua_getuservalue(L, 1); struct handle *tud = lua_touserdata(L, -1); MDB_val key = toval(L, 2); - int result; if (!lua_isnil(L, 3)) { MDB_val data = toval(L, 3); - result = mdb_put(tud->obj, dbi, &key, &data, 0); - } else result = mdb_del(tud->obj, dbi, &key, NULL); - if (result !=0) luaL_error(L, "%s", mdb_strerror(result)); + asserr(mdb_put(tud->obj, dbi, &key, &data, 0)); + } else asserr(mdb_del(tud->obj, dbi, &key, NULL)); return 0; } |