{
ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr;
ACPI_OPERAND_OBJECT *NewObject;
ACPI_FUNCTION_NAME (NsRepairNullElement);
/* No repair needed if return object is non-NULL */if (ReturnObject)
{
return (AE_OK);
}
/* * Attempt to repair a NULL element of a Package object. This applies to * predefined names that return a fixed-length package and each element * is required. It does not apply to variable-length packages where NULL * elements are allowed, especially at the end of the package. */if (ExpectedBtypes & ACPI_RTYPE_INTEGER)
{
/* Need an Integer - create a zero-value integer */
NewObject = AcpiUtCreateIntegerObject ((UINT64) 0);
}
elseif (ExpectedBtypes & ACPI_RTYPE_STRING)
{
/* Need a String - create a NULL string */
NewObject = AcpiUtCreateStringObject (0);
}
elseif (ExpectedBtypes & ACPI_RTYPE_BUFFER)
{
/* Need a Buffer - create a zero-length buffer */
NewObject = AcpiUtCreateBufferObject (0);
}
else
{
/* Error for all other expected types */return (AE_AML_OPERAND_TYPE);
}
if (!NewObject)
{
return (AE_NO_MEMORY);
}
/* Set the reference count according to the parent Package object */
NewObject->Common.ReferenceCount = Data->ParentPackage->Common.ReferenceCount;
ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR,
"%s: Converted NULL package element to expected %s at index %u\n",
Data->Pathname, AcpiUtGetObjectTypeName (NewObject), PackageIndex));
*ReturnObjectPtr = NewObject;
Data->Flags |= ACPI_OBJECT_REPAIRED;
return (AE_OK);
}
Generated on Sat May 26 2012 05:21:29 for ReactOS by
1.7.6.1
ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.