From 3431d8f20ea548c7f6839650ba6a4218524368d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 14 Apr 2017 14:33:44 +0200 Subject: [PATCH] BFS: Fixed readdir() again. * We still need to return B_BUFFER_OVERFLOW if the passed in buffer was smaller than INODE_FILE_NAME_LENGTH, as that's what must be expected from the caller. --- src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp | 2 +- 1 file changed, 1 insertion(+), 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 0f43331fa6..47125d67e5 100644 --- a/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp +++ b/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp @@ -2744,7 +2744,7 @@ TreeIterator::Traverse(int8 direction, void* key, uint16* keyLength, // include the termination for string types bool needsTermination = fTree->fHeader.DataType() == BPLUSTREE_STRING_TYPE; if (length + (needsTermination ? 1 : 0) > maxLength) { - if (!needsTermination) { + if (!needsTermination || maxLength < INODE_FILE_NAME_LENGTH) { // The buffer is too small, restore the last key and return // an error fCurrentNodeOffset = savedNodeOffset;