File db.1.85.hash.diff of Package db1
--- hash/hash_bigkey.c 1998-09-23 16:00:22.000000000 +0200
+++ hash/hash_bigkey.c 2002-02-13 16:02:07.000000000 +0100
@@ -245,7 +245,7 @@
n -= 2;
bp[0] = n;
FREESPACE(bp) = hashp->BSIZE - PAGE_META(n);
- OFFSET(bp) = hashp->BSIZE - 1;
+ OFFSET(bp) = hashp->BSIZE;
bufp->flags |= BUF_MOD;
if (rbufp)
--- hash/hash.c 1998-09-23 16:00:21.000000000 +0200
+++ hash/hash.c 2002-03-12 16:00:54.000000000 +0100
@@ -305,8 +305,10 @@
if (file != NULL) {
if (stat(file, &statbuf))
return (NULL);
- hashp->BSIZE = statbuf.st_blksize;
- hashp->BSHIFT = __hash_log2(hashp->BSIZE);
+ if (statbuf.st_blksize > MAX_BSIZE)
+ statbuf.st_blksize = MAX_BSIZE;
+ hashp->BSHIFT = __hash_log2(statbuf.st_blksize);
+ hashp->BSIZE = 1 << hashp->BSHIFT;
}
#endif
--- hash/hash_page.c 1996-01-02 09:54:00.000000000 +0100
+++ hash/hash_page.c 2002-09-25 10:54:48.000000000 +0200
@@ -420,6 +420,7 @@
/* Try to squeeze key on this page */
if (FREESPACE(bp) > PAIRSIZE(key, val)) {
squeeze_key(bp, key, val);
+ bufp->flags |= BUF_MOD;
return (0);
} else {
bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
@@ -794,7 +795,7 @@
/* Calculate the split number for this page */
for (i = 0; (i < splitnum) && (bit > hashp->SPARES[i]); i++);
offset = (i ? bit - hashp->SPARES[i - 1] : bit);
- if (offset >= SPLITMASK)
+ if (offset > SPLITMASK)
return (0); /* Out of overflow pages */
addr = OADDR_OF(i, offset);
#ifdef DEBUG2