aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthe lemons <citrons@mondecitronne.com>2022-12-06 02:14:32 -0600
committerthe lemons <citrons@mondecitronne.com>2022-12-06 02:14:32 -0600
commit442acbe4ea0769d81d39c93572b859fb145b17f4 (patch)
treec7f01e4dc95ed865c5413de780e2438b4b13904a
parent4384b3d0bdeca1fa3df5bb8a7cc13cf043b8c3a6 (diff)
asserr (assert not error) macro
-rw-r--r--lmdb.c13
1 files 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;
}