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
openSUSE Build Service is sponsored by