From cb8941c48f7eeff3b6b0c0ac963569febb54b30c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Sat, 31 Mar 2012 17:00:02 +0200 Subject: [PATCH] We must not check the node here. * The node might not be a normal tree node, so we must not check it before writing. * Also, it's always a good idea to check if the function you called didn't succeed. * This fixes a crashing bug when running checkfs in some rare circumstances. --- src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp b/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp index 18c7aa19a7..d503e855fe 100644 --- a/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp +++ b/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp @@ -776,7 +776,10 @@ BPlusTree::MakeEmpty() = HOST_ENDIAN_TO_BFS_INT64((uint64)BPLUSTREE_NULL); } - bplustree_node* node = cached.SetToWritable(transaction, NodeSize()); + bplustree_node* node = cached.SetToWritable(transaction, NodeSize(), false); + if (node == NULL) + return B_IO_ERROR; + node->left_link = HOST_ENDIAN_TO_BFS_INT64((uint64)BPLUSTREE_NULL); node->right_link = HOST_ENDIAN_TO_BFS_INT64((uint64)BPLUSTREE_NULL); node->overflow_link = HOST_ENDIAN_TO_BFS_INT64((uint64)BPLUSTREE_NULL);