From 442acbe4ea0769d81d39c93572b859fb145b17f4 Mon Sep 17 00:00:00 2001 From: the lemons Date: Tue, 6 Dec 2022 02:14:32 -0600 Subject: asserr (assert not error) macro --- lmdb.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lmdb.c b/lmdb.c index 5bcf162..7e562c0 100644 --- a/lmdb.c +++ b/lmdb.c @@ -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; } -- cgit v1.2.3