From 2bf3fcfc9c2f90c2c28cdd61fe89ed80d0063cf8 Mon Sep 17 00:00:00 2001 From: Krasimir Angelov Date: Fri, 27 Jan 2023 08:33:04 +0100 Subject: [PATCH] fix transactions on Windows --- src/runtime/c/pgf/db.cxx | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/runtime/c/pgf/db.cxx b/src/runtime/c/pgf/db.cxx index 29817a3b3..adf825177 100644 --- a/src/runtime/c/pgf/db.cxx +++ b/src/runtime/c/pgf/db.cxx @@ -1532,14 +1532,14 @@ void PgfDB::commit(object o) pthread_mutex_unlock(&ms->write_mutex); #else - if (fd > 0) { - if (free_descriptors[2] != 0) { - ptr(block_descr,free_descriptors[2])->chain = free_descriptors[0]; - free_descriptors[0] = free_descriptors[1]; - free_descriptors[1] = 0; - free_descriptors[2] = 0; - } + if (free_descriptors[2] != 0) { + ptr(block_descr,free_descriptors[2])->chain = free_descriptors[0]; + free_descriptors[0] = free_descriptors[1]; + free_descriptors[1] = 0; + free_descriptors[2] = 0; + } + if (fd > 0) { if (!FlushViewOfFile(base,mmap_size)) { throw pgf_systemerror(last_error_to_errno()); } @@ -1556,6 +1556,12 @@ void PgfDB::commit(object o) ms->curr_txn_id--; throw pgf_systemerror(last_error_to_errno()); } + } else { + ms->active_revision = o; + ms->top = top; + ms->free_blocks = free_blocks; + ms->free_descriptors = free_descriptors[0]; + ms->curr_txn_id++; } ReleaseMutex(hWriteMutex);