From 3de759a7be9ac69dfdae6d4f62e6a19e837cf89c 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: Sun, 7 Aug 2022 22:24:00 +0300 Subject: [PATCH] mdbx: fix page-boundary checking inside accelerated `scan4seq()`. --- src/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core.c b/src/core.c index ee8a6d13..a17fa128 100644 --- a/src/core.c +++ b/src/core.c @@ -6015,7 +6015,7 @@ scan4seq_avx2(pgno_t *range, const size_t len, const unsigned seq) { #else const unsigned on_page_safe_mask = 0xfe0 /* enough for '-31' bytes offset */; #endif - if (likely(on_page_safe_mask & (uintptr_t)range)) { + if (likely(on_page_safe_mask & (uintptr_t)(range + offset))) { const unsigned extra = (unsigned)(detent + 8 - range); assert(extra > 0 && extra < 8); mask = 0xFF << extra; @@ -6092,7 +6092,7 @@ scan4seq_sse2(pgno_t *range, const size_t len, const unsigned seq) { #else const unsigned on_page_safe_mask = 0xff0 /* enough for '-15' bytes offset */; #endif - if (likely(on_page_safe_mask & (uintptr_t)range)) { + if (likely(on_page_safe_mask & (uintptr_t)(range + offset))) { const unsigned extra = (unsigned)(detent + 4 - range); assert(extra > 0 && extra < 4); mask = 0xF << extra;