Kernel: Fix AML if parsing
Parse else case unconditionally, even if _if_ case evaluates to true
This commit is contained in:
parent
f1b2d7530d
commit
e667326df5
|
@ -40,19 +40,17 @@ namespace Kernel::ACPI::AML
|
||||||
}
|
}
|
||||||
|
|
||||||
// Else
|
// Else
|
||||||
if (!predicate_integer.value())
|
BAN::ConstByteSpan else_pkg;
|
||||||
|
if (outer_aml_data.size() >= 1 && static_cast<Byte>(outer_aml_data[0]) == Byte::ElseOp)
|
||||||
{
|
{
|
||||||
if (outer_aml_data.size() < 1 || static_cast<Byte>(outer_aml_data[0]) != Byte::ElseOp)
|
outer_aml_data = outer_aml_data.slice(1);
|
||||||
context.aml_data = BAN::ConstByteSpan();
|
auto else_pkg_result = AML::parse_pkg(outer_aml_data);
|
||||||
else
|
if (!else_pkg_result.has_value())
|
||||||
{
|
return ParseResult::Failure;
|
||||||
outer_aml_data = outer_aml_data.slice(1);
|
else_pkg = else_pkg_result.value();
|
||||||
auto else_pkg = AML::parse_pkg(outer_aml_data);
|
|
||||||
if (!else_pkg.has_value())
|
|
||||||
return ParseResult::Failure;
|
|
||||||
context.aml_data = else_pkg.value();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (!predicate_integer.value())
|
||||||
|
context.aml_data = else_pkg;
|
||||||
|
|
||||||
while (context.aml_data.size() > 0)
|
while (context.aml_data.size() > 0)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue