summaryrefslogtreecommitdiff
path: root/core/gdbm/8952f7fd7cebffbe4ecf8c232e4435c5de72678a.patch
blob: c98f721e5491e15c7284fa19239ba8a240f5a6d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
From 8952f7fd7cebffbe4ecf8c232e4435c5de72678a Mon Sep 17 00:00:00 2001
From: Sergey Poznyakoff <gray@gnu.org>
Date: Thu, 16 Sep 2021 08:45:29 +0300
Subject: Fix computation of dbf->avail->count after pushing new avail block.

This is a very long-standing bug that caused a loss of an avail
entry if the original avail table had odd number of entries.

* src/falloc.c (push_avail_block): Fix computation of dbf->avail->count.
---
 src/falloc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/falloc.c b/src/falloc.c
index 979d77a..890ed7b 100644
--- a/src/falloc.c
+++ b/src/falloc.c
@@ -314,8 +314,8 @@ push_avail_block (GDBM_FILE dbf)
     else
       dbf->avail->av_table[index>>1] = dbf->avail->av_table[index];
 
-  /* Update the header avail count to previous size divided by 2. */
-  dbf->avail->count >>= 1;
+  /* Update the header avail count. */
+  dbf->avail->count -= temp->count;
 
   rc = 0;
   do
-- 
cgit v1.2.1