From b083b165a7b006ec982070d8f6399c27ec2eefef Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 6 Sep 2021 11:27:24 +0200 Subject: [PATCH] Kernel/Ext2FS: Wrap calls to traverse_as_directory() in TRY() Nothing says we can't TRY() a multi-line function call. :^) --- Kernel/FileSystem/Ext2FileSystem.cpp | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp index a10a7bd292..f7b9540e9a 100644 --- a/Kernel/FileSystem/Ext2FileSystem.cpp +++ b/Kernel/FileSystem/Ext2FileSystem.cpp @@ -1175,17 +1175,14 @@ KResult Ext2FSInode::add_child(Inode& child, const StringView& name, mode_t mode Vector entries; bool name_already_exists = false; - KResult result = traverse_as_directory([&](auto& entry) { + TRY(traverse_as_directory([&](auto& entry) { if (name == entry.name) { name_already_exists = true; return false; } entries.append({ entry.name, entry.inode.index(), entry.file_type }); return true; - }); - - if (result.is_error()) - return result; + })); if (name_already_exists) { dbgln("Ext2FSInode[{}]::add_child(): Name '{}' already exists", identifier(), name); @@ -1220,13 +1217,11 @@ KResult Ext2FSInode::remove_child(const StringView& name) InodeIdentifier child_id { fsid(), child_inode_index }; Vector entries; - KResult result = traverse_as_directory([&](auto& entry) { + TRY(traverse_as_directory([&](auto& entry) { if (name != entry.name) entries.append({ entry.name, entry.inode.index(), entry.file_type }); return true; - }); - if (result.is_error()) - return result; + })); TRY(write_directory(entries)); @@ -1569,13 +1564,10 @@ KResult Ext2FSInode::populate_lookup_cache() const return KSuccess; HashMap children; - KResult result = traverse_as_directory([&children](auto& entry) { + TRY(traverse_as_directory([&children](auto& entry) { children.set(entry.name, entry.inode.index()); return true; - }); - - if (!result.is_success()) - return result; + })); VERIFY(m_lookup_cache.is_empty()); m_lookup_cache = move(children);