check return value of enif_make_binary when calling get/1
This commit is contained in:
parent
ff052c07b5
commit
2945d0096f
1 changed files with 6 additions and 5 deletions
|
@ -65,6 +65,7 @@ static struct emdb_map_t * emdb_map = NULL;
|
||||||
|
|
||||||
/* emdb errors */
|
/* emdb errors */
|
||||||
#define EMDB_MALLOC_ERR "error_malloc"
|
#define EMDB_MALLOC_ERR "error_malloc"
|
||||||
|
#define EMDB_MAKE_BINARY_ERR "error_make_binary"
|
||||||
#define EMDB_CREATE_ERR "error_create"
|
#define EMDB_CREATE_ERR "error_create"
|
||||||
#define EMDB_MAPSIZE_ERR "error_mapsize"
|
#define EMDB_MAPSIZE_ERR "error_mapsize"
|
||||||
#define EMDB_OPEN_ERR "error_open"
|
#define EMDB_OPEN_ERR "error_open"
|
||||||
|
@ -265,7 +266,7 @@ static ERL_NIF_TERM emdb_get_nif (ErlNifEnv * env,
|
||||||
mkey.mv_data = key.data;
|
mkey.mv_data = key.data;
|
||||||
|
|
||||||
if (mdb_txn_begin(handle, NULL, 0, & txn))
|
if (mdb_txn_begin(handle, NULL, 0, & txn))
|
||||||
FAIL_FAST(EMDB_TXN_BEGIN_ERR, err1);
|
FAIL_FAST(EMDB_TXN_BEGIN_ERR, err);
|
||||||
|
|
||||||
if(mdb_get(txn, node -> dbi, & mkey, & mdata))
|
if(mdb_get(txn, node -> dbi, & mkey, & mdata))
|
||||||
{
|
{
|
||||||
|
@ -277,16 +278,16 @@ static ERL_NIF_TERM emdb_get_nif (ErlNifEnv * env,
|
||||||
val.data = mdata.mv_data;
|
val.data = mdata.mv_data;
|
||||||
|
|
||||||
term = enif_make_binary(env, &val);
|
term = enif_make_binary(env, &val);
|
||||||
|
|
||||||
mdb_txn_abort(txn);
|
mdb_txn_abort(txn);
|
||||||
|
|
||||||
|
if (! term)
|
||||||
|
FAIL_FAST(EMDB_MAKE_BINARY_ERR, err);
|
||||||
|
|
||||||
return enif_make_tuple(env, 2,
|
return enif_make_tuple(env, 2,
|
||||||
atom_ok,
|
atom_ok,
|
||||||
term);
|
term);
|
||||||
|
|
||||||
err2:
|
err:
|
||||||
mdb_txn_abort(txn);
|
|
||||||
err1:
|
|
||||||
return enif_make_atom(env, err);
|
return enif_make_atom(env, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue