diff --git a/src/cursor.c b/src/cursor.c index 0d4e1ec5..4371f753 100644 --- a/src/cursor.c +++ b/src/cursor.c @@ -2184,15 +2184,22 @@ __hot int cursor_ops(MDBX_cursor *mc, MDBX_val *key, MDBX_val *data, if (unlikely(rc != MDBX_SUCCESS)) return rc; } else { - if (unlikely(is_eof(mc) || !inner_filled(mc))) + if (unlikely(!is_filled(mc))) return MDBX_ENODATA; - cASSERT(mc, is_filled(mc)); if (key) { const page_t *mp = mc->pg[mc->top]; const node_t *node = page_node(mp, mc->ki[mc->top]); *key = get_key(node); } } + cASSERT(mc, is_filled(mc)); + if (unlikely(!inner_filled(mc))) { + if (inner_pointed(mc)) + return MDBX_ENODATA; + const page_t *mp = mc->pg[mc->top]; + const node_t *node = page_node(mp, mc->ki[mc->top]); + return node_read(mc, node, data, mp); + } goto fetch_multiple; case MDBX_NEXT_MULTIPLE: