From b5310b1638606e8f17001af473f1957086ff567d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sun, 1 Apr 2012 00:34:09 +0200 Subject: [PATCH] Fixed another bug I introduced with r43837. * Really the same thing, just for fragment nodes this time. --- src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp b/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp index 3181658899..1ff34ffbd2 100644 --- a/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp +++ b/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp @@ -1795,7 +1795,7 @@ BPlusTree::_RemoveDuplicate(Transaction& transaction, } // remove the array from the fragment node if it is empty - if (arrayCount == 1) { + if (--arrayCount == 1) { // set the link to the remaining value if (cached.MakeWritable(transaction) == NULL) return B_IO_ERROR; @@ -2331,9 +2331,11 @@ BPlusTree::_ValidateChildren(TreeCheck& check, uint32 level, off_t offset, && check.VisitedFragment(duplicateOffset); if (!isKnownFragment && check.Visited(duplicateOffset)) { - dprintf("inode %" B_PRIdOFF ": duplicate node at %" - B_PRIdOFF " already visited!\n", fStream->ID(), - duplicateOffset); + dprintf("inode %" B_PRIdOFF ": %s node at %" + B_PRIdOFF " already visited, referenced from %" + B_PRIdOFF "!\n", fStream->ID(), + isFragmentNode ? "fragment" : "duplicate", + duplicateOffset, offset); check.FoundError(); break; }