From 2c4399702632f510389b985d2c60a7a7f7783dd2 Mon Sep 17 00:00:00 2001 From: Leo Yuriev Date: Tue, 23 May 2017 22:07:35 +0300 Subject: [PATCH] mdbx: change mdbx_env_set_oomfunc() API. --- mdbx.h | 6 ++++-- src/mdbx.c | 12 +++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/mdbx.h b/mdbx.h index 9727f23a..70b87a8e 100644 --- a/mdbx.h +++ b/mdbx.h @@ -1452,8 +1452,10 @@ typedef int(MDBX_oom_func)(MDB_env *env, int pid, mdbx_tid_t tid, uint64_t txn, * a laggard readers to allowing reclaiming of freeDB. * * [in] env An environment handle returned by mdbx_env_create(). - * [in] oomfunc A MDBX_oom_func function or NULL to disable. */ -LIBMDBX_API void mdbx_env_set_oomfunc(MDB_env *env, MDBX_oom_func *oom_func); + * [in] oomfunc A MDBX_oom_func function or NULL to disable. + * + * Returns A non-zero error value on failure and 0 on success. */ +LIBMDBX_API int mdbx_env_set_oomfunc(MDB_env *env, MDBX_oom_func *oom_func); /* Get the current oom_func callback. * diff --git a/src/mdbx.c b/src/mdbx.c index 7081dd20..cebc1d59 100644 --- a/src/mdbx.c +++ b/src/mdbx.c @@ -9635,9 +9635,15 @@ int __cold mdbx_env_set_syncbytes(MDB_env *env, size_t bytes) { return env->me_map ? mdbx_env_sync(env, 0) : MDB_SUCCESS; } -void __cold mdbx_env_set_oomfunc(MDB_env *env, MDBX_oom_func *oomfunc) { - if (likely(env && env->me_signature == MDBX_ME_SIGNATURE)) - env->me_oom_func = oomfunc; +int __cold mdbx_env_set_oomfunc(MDB_env *env, MDBX_oom_func *oomfunc) { + if (unlikely(!env)) + return MDBX_EINVAL; + + if (unlikely(env->me_signature != MDBX_ME_SIGNATURE)) + return MDBX_EBADSIGN; + + env->me_oom_func = oomfunc; + return MDB_SUCCESS; } MDBX_oom_func *__cold mdbx_env_get_oomfunc(MDB_env *env) {