From 37217cb199a663b55de71dcb797c114d7e080a33 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: Sat, 20 Jul 2024 22:54:15 +0300 Subject: [PATCH] =?UTF-8?q?mdbx-windows:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=B0=D1=80=D0=B5?= =?UTF-8?q?=D0=B7=D0=BA=D0=B8=20`FILE=5FSEGMENT=5FELEMENT`=20(backport).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ошибка слишком грубая. Похоже при переработке I/O под Windows при `git pull --rebase` потерялся коммит. К повреждению БД проблема не приводила, так как сбой происходил во время записи данных с возвратом ERROR_INVALID_PARAMETER из системного вызова. --- src/osal.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/osal.c b/src/osal.c index a1de5be6..4195f74f 100644 --- a/src/osal.c +++ b/src/osal.c @@ -766,11 +766,10 @@ MDBX_INTERNAL_FUNC int osal_ioring_add(osal_ioring_t *ior, const size_t offset, item->sgv[0].Buffer = PtrToPtr64(data); for (size_t i = 1; i < segments; ++i) { data = ptr_disp(data, ior->pagesize); - item->sgv[slots_used].Buffer = PtrToPtr64(data); + item->sgv[i].Buffer = PtrToPtr64(data); } - item->sgv[slots_used].Buffer = 0; + item->sgv[slots_used = segments].Buffer = 0; assert((item->single.iov_len & ior_WriteFile_flag) == 0); - slots_used = segments; } ior->last_bytes = bytes; ior_last_sgvcnt(ior, item) = slots_used;