aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.devcontainer/x86-64/devcontainer.json2
-rw-r--r--kernel/src/devices/storage/management.cpp15
2 files changed, 10 insertions, 7 deletions
diff --git a/.devcontainer/x86-64/devcontainer.json b/.devcontainer/x86-64/devcontainer.json
index 775da72..18e6419 100644
--- a/.devcontainer/x86-64/devcontainer.json
+++ b/.devcontainer/x86-64/devcontainer.json
@@ -1,6 +1,6 @@
{
"name": "TeachOS on x86-64",
- "image": "registry.gitlab.ost.ch:45023/teachos/devcontainers/x86-64:15.2.0-4",
+ "image": "registry.gitlab.ost.ch:45023/teachos/devcontainers/x86-64:16.1.0-1",
"features": {
"ghcr.io/devcontainers/features/git:1": {},
"ghcr.io/devcontainers/features/git-lfs:1": {},
diff --git a/kernel/src/devices/storage/management.cpp b/kernel/src/devices/storage/management.cpp
index 7361cd5..1f2acba 100644
--- a/kernel/src/devices/storage/management.cpp
+++ b/kernel/src/devices/storage/management.cpp
@@ -13,6 +13,7 @@
#include <algorithm>
#include <cstddef>
#include <optional>
+#include <ranges>
namespace
{
@@ -63,18 +64,20 @@ namespace kernel::devices::storage
auto management::device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr<kapi::devices::device>
{
- kstd::shared_ptr<kapi::devices::device> found = nullptr;
-
- std::ranges::find_if(m_controllers, [&](auto const & controller) {
+ auto found = std::ranges::find_if(m_controllers, [=](auto const & controller) {
if (controller != nullptr && controller->major() == major)
{
- found = controller->device_by_minor(minor);
- return found != nullptr;
+ return controller->device_by_minor(minor) != nullptr;
}
return false;
});
- return found;
+ if (found != std::ranges::cend(m_controllers))
+ {
+ return found->get()->device_by_minor(minor);
+ }
+
+ return nullptr;
}
auto management::determine_boot_device() -> kstd::shared_ptr<kapi::devices::device>