diff --git a/kernel/kernel/ACPI/AML/Namespace.cpp b/kernel/kernel/ACPI/AML/Namespace.cpp index 793d4300..a86ffff2 100644 --- a/kernel/kernel/ACPI/AML/Namespace.cpp +++ b/kernel/kernel/ACPI/AML/Namespace.cpp @@ -34,7 +34,6 @@ namespace Kernel::ACPI } AML_DEBUG_PRINT_INDENT(indent); AML_DEBUG_PRINT("}"); - } BAN::Optional AML::Namespace::resolve_path(const AML::NameString& relative_base, const AML::NameString& relative_path, FindMode mode, bool check_existence) const @@ -77,7 +76,7 @@ namespace Kernel::ACPI if (absolute_path.back() == '.') absolute_path.pop_back(); - if (!check_existence || m_objects.contains(absolute_path)) + if (!check_existence || absolute_path == "\\"sv || m_objects.contains(absolute_path)) return absolute_path; return {}; } @@ -126,6 +125,9 @@ namespace Kernel::ACPI if (!canonical_path.has_value()) return nullptr; + if (canonical_path->sv() == "\\"sv) + return this; + auto it = m_objects.find(canonical_path.value()); if (it == m_objects.end()) return {}; @@ -191,7 +193,6 @@ namespace Kernel::ACPI ASSERT(!s_root_namespace); s_root_namespace = MUST(BAN::RefPtr::create(NameSeg("\\"sv))); s_root_namespace->scope = AML::NameString("\\"sv); - MUST(s_root_namespace->m_objects.insert("\\"sv, s_root_namespace)); Integer::Constants::Zero = MUST(BAN::RefPtr::create(0, true)); Integer::Constants::One = MUST(BAN::RefPtr::create(1, true));