diff options
Diffstat (limited to 'source/common')
-rw-r--r-- | source/common/adfile.c | 4 | ||||
-rw-r--r-- | source/common/adwalk.c | 19 |
2 files changed, 14 insertions, 9 deletions
diff --git a/source/common/adfile.c b/source/common/adfile.c index 48ff89f..dd5abee 100644 --- a/source/common/adfile.c +++ b/source/common/adfile.c @@ -329,6 +329,7 @@ FlSplitInputPathname ( if (!Filename) { + ACPI_FREE (DirectoryPath); return (AE_NO_MEMORY); } @@ -337,6 +338,9 @@ FlSplitInputPathname ( if (OutFilename) { *OutFilename = Filename; + return (AE_OK); } + + ACPI_FREE (Filename); return (AE_OK); } diff --git a/source/common/adwalk.c b/source/common/adwalk.c index 2fb42fd..5b04859 100644 --- a/source/common/adwalk.c +++ b/source/common/adwalk.c @@ -820,17 +820,18 @@ AcpiDmXrefDescendingOp ( { if (Status == AE_NOT_FOUND) { - AcpiDmAddToExternalList (Op, Path, (UINT8) ObjectType, 0); - /* - * We could install this into the namespace, but we catch duplicate - * externals when they are added to the list. + * Add this symbol as an external declaration, except if the + * parent is a CondRefOf operator. For this operator, we do not + * need an external, nor do we want one, since this can cause + * disassembly problems if the symbol is actually a control + * method. */ -#if 0 - Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, - ACPI_IMODE_LOAD_PASS1, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Node); -#endif + if (!(Op->Asl.Parent && + (Op->Asl.Parent->Asl.AmlOpcode == AML_COND_REF_OF_OP))) + { + AcpiDmAddToExternalList (Op, Path, (UINT8) ObjectType, 0); + } } } |