From 4022110955d3932884eed2b04a8b7025a4b47219 Mon Sep 17 00:00:00 2001
From: Leonid Yuriev <leo@yuriev.ru>
Date: Sat, 14 Sep 2019 18:48:07 +0300
Subject: [PATCH] mdbx: reset returning-by-pointer result on error.

Change-Id: I5e0aa1eae343dc9acc36a95e4f7e11104efc83ce
---
 src/elements/core.c | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/elements/core.c b/src/elements/core.c
index 3573061b..ccddc296 100644
--- a/src/elements/core.c
+++ b/src/elements/core.c
@@ -3616,10 +3616,12 @@ int mdbx_txn_begin(MDBX_env *env, MDBX_txn *parent, unsigned flags,
   int rc;
   unsigned size, tsize;
 
-  if (unlikely(!env || !ret))
+  if (unlikely(!ret))
     return MDBX_EINVAL;
-
   *ret = NULL;
+
+  if (unlikely(!env))
+    return MDBX_EINVAL;
   if (unlikely(env->me_signature != MDBX_ME_SIGNATURE))
     return MDBX_EBADSIGN;
 
@@ -9993,7 +9995,11 @@ static int mdbx_cursor_init(MDBX_cursor *mc, MDBX_txn *txn, MDBX_dbi dbi) {
 }
 
 int mdbx_cursor_open(MDBX_txn *txn, MDBX_dbi dbi, MDBX_cursor **ret) {
-  if (unlikely(!ret || !txn))
+  if (unlikely(!ret))
+    return MDBX_EINVAL;
+  *ret = NULL;
+
+  if (unlikely(!txn))
     return MDBX_EINVAL;
 
   if (unlikely(txn->mt_signature != MDBX_MT_SIGNATURE))