From b6ffec12e48d3f898720ed772974edd4172d8643 Mon Sep 17 00:00:00 2001 From: Leonid Yuriev Date: Wed, 11 Aug 2021 15:46:31 +0300 Subject: [PATCH] "mdbx: ignore legacy `P_DIRTY` flag (`0x10`) for nested/sub-pages. --- src/core.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core.c b/src/core.c index aac27b37..e7ccb68f 100644 --- a/src/core.c +++ b/src/core.c @@ -17273,18 +17273,20 @@ __cold static int mdbx_page_check(MDBX_cursor *const mc, break; case F_DUPDATA /* short sub-page */: if (unlikely(dsize <= PAGEHDRSZ)) { - rc = bad_page(mp, "invalid nested-page record size (%zu)\n", dsize); + rc = bad_page(mp, "invalid nested/sub-page record size (%zu)\n", + dsize); continue; } else { const MDBX_page *const sp = (MDBX_page *)data; const char *const end_of_subpage = data + dsize; const int nsubkeys = page_numkeys(sp); - switch (sp->mp_flags) { + switch (sp->mp_flags & /* ignore legacy P_DIRTY flag */ ~0x10) { case P_LEAF | P_SUBP: case P_LEAF | P_LEAF2 | P_SUBP: break; default: - rc = bad_page(mp, "invalid nested-page flags (%u)\n", sp->mp_flags); + rc = bad_page(mp, "invalid nested/sub-page flags (0x%02x)\n", + sp->mp_flags); continue; } @@ -20545,7 +20547,7 @@ __cold static int mdbx_walk_tree(mdbx_walk_ctx_t *ctx, const pgno_t pgno, size_t subalign_bytes = 0; MDBX_page_type_t subtype; - switch (sp->mp_flags) { + switch (sp->mp_flags & /* ignore legacy P_DIRTY flag */ ~0x10) { case P_LEAF | P_SUBP: subtype = MDBX_subpage_leaf; break;