diff options
Diffstat (limited to 'source/compiler/aslload.c')
-rw-r--r-- | source/compiler/aslload.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/source/compiler/aslload.c b/source/compiler/aslload.c index 955fd7f454a41..99ec1bfe06dfa 100644 --- a/source/compiler/aslload.c +++ b/source/compiler/aslload.c @@ -698,6 +698,25 @@ LdNamespace1Begin ( */ Status = AE_OK; } + else if ((Node->Flags & ANOBJ_IS_EXTERNAL) && + (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) && + (ObjectType == ACPI_TYPE_ANY)) + { + /* Allow update of externals of unknown type. */ + + if (AcpiNsOpensScope (ActualObjectType)) + { + Node->Type = (UINT8) ActualObjectType; + Status = AE_OK; + } + else + { + sprintf (MsgBuffer, "%s [%s]", Op->Asl.ExternalName, + AcpiUtGetTypeName (Node->Type)); + AslError (ASL_ERROR, ASL_MSG_SCOPE_TYPE, Op, MsgBuffer); + return_ACPI_STATUS (AE_OK); + } + } else { /* Valid error, object already exists */ |