diff options
Diffstat (limited to 'source/components/parser/psparse.c')
| -rw-r--r-- | source/components/parser/psparse.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/source/components/parser/psparse.c b/source/components/parser/psparse.c index 810d97e0e019..8f230320bab4 100644 --- a/source/components/parser/psparse.c +++ b/source/components/parser/psparse.c @@ -555,8 +555,10 @@ AcpiPsParseAml ( { /* Either the method parse or actual execution failed */ + AcpiExExitInterpreter (); ACPI_ERROR_METHOD ("Method parse/execution failed", WalkState->MethodNode, NULL, Status); + AcpiExEnterInterpreter (); /* Check for possible multi-thread reentrancy problem */ @@ -589,7 +591,8 @@ AcpiPsParseAml ( * cleanup to do */ if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == - ACPI_PARSE_EXECUTE) || + ACPI_PARSE_EXECUTE && + !(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL)) || (ACPI_FAILURE (Status))) { AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState); |
