From e33b3bcdff5fd76d25b7db337d2a402fef72f858 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 6 Nov 2023 21:06:10 +0200 Subject: [PATCH] Kernel: Fix TmpFS directory entry enumeration early return --- kernel/kernel/FS/TmpFS/Inode.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/kernel/FS/TmpFS/Inode.cpp b/kernel/kernel/FS/TmpFS/Inode.cpp index 13e7e8f0cd..8db6d538d7 100644 --- a/kernel/kernel/FS/TmpFS/Inode.cpp +++ b/kernel/kernel/FS/TmpFS/Inode.cpp @@ -394,7 +394,8 @@ namespace Kernel template void TmpDirectoryInode::for_each_entry(F callback) { - for (size_t data_block_index = 0; data_block_index * blksize() < (size_t)size(); data_block_index++) + bool done = false; + for (size_t data_block_index = 0; !done && data_block_index * blksize() < (size_t)size(); data_block_index++) { const size_t block_index = this->block_index(data_block_index).value(); const size_t byte_count = BAN::Math::min(size() - data_block_index * blksize(), blksize()); @@ -403,12 +404,13 @@ namespace Kernel bytespan = bytespan.slice(0, byte_count); while (bytespan.size() > 0) { - const auto& entry = bytespan.as(); + auto& entry = bytespan.as(); switch (callback(entry)) { case BAN::Iteration::Continue: break; case BAN::Iteration::Break: + done = true; return; default: ASSERT_NOT_REACHED();