This commit was generated by cvs2svn to compensate for changes in r117527,

which included commits to RCS files with non-trunk default branches.
This commit is contained in:
Nate Lawson 2003-07-13 22:52:51 +00:00
commit 377a65490a

View File

@ -392,6 +392,7 @@ AcpiDsMethodDataSetValue (
{
ACPI_STATUS Status;
ACPI_NAMESPACE_NODE *Node;
ACPI_OPERAND_OBJECT *NewDesc = Object;
ACPI_FUNCTION_TRACE ("DsMethodDataSetValue");
@ -410,17 +411,32 @@ AcpiDsMethodDataSetValue (
return_ACPI_STATUS (Status);
}
/*
* Increment ref count so object can't be deleted while installed.
* NOTE: We do not copy the object in order to preserve the call by
* reference semantics of ACPI Control Method invocation.
* (See ACPI Specification 2.0C)
/*
* If the object has just been created and is not attached to anything,
* (the reference count is 1), then we can just store it directly into
* the arg/local. Otherwise, we must copy it.
*/
AcpiUtAddReference (Object);
if (Object->Common.ReferenceCount > 1)
{
Status = AcpiUtCopyIobjectToIobject (Object, &NewDesc, WalkState);
if (ACPI_FAILURE (Status))
{
return_ACPI_STATUS (Status);
}
ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Object Copied %p, new %p\n",
Object, NewDesc));
}
else
{
/* Increment ref count so object can't be deleted while installed */
AcpiUtAddReference (NewDesc);
}
/* Install the object */
Node->Object = Object;
Node->Object = NewDesc;
return_ACPI_STATUS (Status);
}