From 5d9fb63fb8f512915e2000929c594c9abc86b896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Thu, 20 Mar 2025 18:00:44 +0300 Subject: [PATCH] =?UTF-8?q?mdbx:=20=D1=83=D1=81=D0=B8=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D1=8F?= =?UTF-8?q?=20=D1=81=D0=B8=D0=B3=D0=BD=D0=B0=D1=82=D1=83=D1=80=20=D0=BA?= =?UTF-8?q?=D1=83=D1=80=D1=81=D0=BE=D1=80=D0=BE=D0=B2=20(backport).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/cursor.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/cursor.c b/src/cursor.c index be82940f..8b6541dd 100644 --- a/src/cursor.c +++ b/src/cursor.c @@ -189,9 +189,11 @@ int cursor_shadow(MDBX_cursor *mc, MDBX_txn *nested, const size_t dbi) { const size_t size = mc->subcur ? sizeof(MDBX_cursor) + sizeof(subcur_t) : sizeof(MDBX_cursor); for (MDBX_cursor *bk; mc; mc = bk->next) { cASSERT(mc, mc != mc->next); - bk = mc; - if (mc->signature != cur_signature_live) + if (mc->signature != cur_signature_live) { + ENSURE(nested->env, mc->signature == cur_signature_wait4eot); + bk = mc; continue; + } bk = osal_malloc(size); if (unlikely(!bk)) return MDBX_ENOMEM; @@ -228,7 +230,7 @@ MDBX_cursor *cursor_eot(MDBX_cursor *mc, MDBX_txn *txn, const bool merge) { tASSERT(txn, bk->txn == txn->parent); /* Zap: Using uninitialized memory '*mc->backup'. */ MDBX_SUPPRESS_GOOFY_MSVC_ANALYZER(6001); - ENSURE(mc->txn->env, bk->signature == cur_signature_live); + ENSURE(txn->env, bk->signature == cur_signature_live); tASSERT(txn, mx == bk->subcur); if (merge) { /* Update pointers to parent txn */