aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/filesystem')
-rw-r--r--kernel/src/filesystem/vfs.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/src/filesystem/vfs.cpp b/kernel/src/filesystem/vfs.cpp
index 8f48820..c9939fa 100644
--- a/kernel/src/filesystem/vfs.cpp
+++ b/kernel/src/filesystem/vfs.cpp
@@ -12,7 +12,9 @@
#include <kstd/memory>
#include <kstd/string>
+#include <kstd/vector>
+#include <algorithm>
#include <optional>
#include <ranges>
#include <string_view>
@@ -159,10 +161,13 @@ namespace kernel::filesystem
auto current_dentry = current_mount->root_dentry();
auto path_parts = kernel::filesystem::path::split(path);
+ kstd::vector path_parts_vector(path_parts.begin(), path_parts.end());
+ std::ranges::reverse(path_parts_vector);
- for (auto it = path_parts.begin(); it != path_parts.end(); ++it)
+ while (!path_parts_vector.empty())
{
- std::string_view part_view{*it};
+ std::string_view part_view{path_parts_vector.back()};
+ path_parts_vector.pop_back();
if (part_view == ".")
{