diff options
| author | Jung-uk Kim <jkim@FreeBSD.org> | 2013-01-02 19:01:21 +0000 | 
|---|---|---|
| committer | Jung-uk Kim <jkim@FreeBSD.org> | 2013-01-02 19:01:21 +0000 | 
| commit | b28e481ae9b051dab150e9b5a89730cdc1103a9c (patch) | |
| tree | 434e706ece73a93073f350c91cd35ed7d7e98811 /source/components/executer/exstore.c | |
| parent | c2463a8709e5b3a5ce54c09d35b4820a756b0fc5 (diff) | |
Notes
Diffstat (limited to 'source/components/executer/exstore.c')
| -rw-r--r-- | source/components/executer/exstore.c | 25 | 
1 files changed, 20 insertions, 5 deletions
| diff --git a/source/components/executer/exstore.c b/source/components/executer/exstore.c index 283cff59864f9..2eb0897834450 100644 --- a/source/components/executer/exstore.c +++ b/source/components/executer/exstore.c @@ -515,13 +515,28 @@ AcpiExStoreObjectToNode (      default:          ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, -            "Storing %s (%p) directly into node (%p) with no implicit conversion\n", -            AcpiUtGetObjectTypeName (SourceDesc), SourceDesc, Node)); +            "Storing [%s] (%p) directly into node [%s] (%p)" +            " with no implicit conversion\n", +            AcpiUtGetObjectTypeName (SourceDesc), SourceDesc, +            AcpiUtGetObjectTypeName (TargetDesc), Node)); -        /* No conversions for all other types. Just attach the source object */ +        /* +         * No conversions for all other types. Directly store a copy of +         * the source object. NOTE: This is a departure from the ACPI +         * spec, which states "If conversion is impossible, abort the +         * running control method". +         * +         * This code implements "If conversion is impossible, treat the +         * Store operation as a CopyObject". +         */ +        Status = AcpiUtCopyIobjectToIobject (SourceDesc, &NewDesc, WalkState); +        if (ACPI_FAILURE (Status)) +        { +            return_ACPI_STATUS (Status); +        } -        Status = AcpiNsAttachObject (Node, SourceDesc, -                    SourceDesc->Common.Type); +        Status = AcpiNsAttachObject (Node, NewDesc, NewDesc->Common.Type); +        AcpiUtRemoveReference (NewDesc);          break;      } | 
