From 67edf7332172b490e5f5fe0bdd8c0f3948ee6f1c Mon Sep 17 00:00:00 2001 From: Elliot Nunn Date: Sun, 14 Oct 2018 16:30:32 +0800 Subject: [PATCH] Fix bug in B*-tree size calculation --- machfs/btree.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/machfs/btree.py b/machfs/btree.py index c3b8429..9b2058e 100644 --- a/machfs/btree.py +++ b/machfs/btree.py @@ -183,14 +183,15 @@ def make_btree(records, bthKeyLen, blksize): most_recent[node.ndType] = i bthFNode = most_recent.get(0xFF, 0) + bthFree = bitmanip.pad_up(len(nodelist), nodemult) - len(nodelist) + bthNNodes = len(nodelist) + bthFree + # Populate the first (header) record of the header node bthNodeSize = 512 - bthNNodes = len(nodelist); bthFree = 0 headnode.records[0] = struct.pack('>HLLLLHHLL76x', bthDepth, bthRoot, bthNRecs, bthFNode, bthLNode, bthNodeSize, bthKeyLen, bthNNodes, bthFree) - slop_nodes = bitmanip.pad_up(len(nodelist), nodemult) - len(nodelist) - nodelist.append(512 * slop_nodes) + nodelist.append(512 * bthFree) return b''.join(bytes(node) for node in nodelist)