summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/utcopy.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/utcopy.c')
-rw-r--r--sys/contrib/dev/acpica/utcopy.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/sys/contrib/dev/acpica/utcopy.c b/sys/contrib/dev/acpica/utcopy.c
index 370f22c..8d296de 100644
--- a/sys/contrib/dev/acpica/utcopy.c
+++ b/sys/contrib/dev/acpica/utcopy.c
@@ -1,7 +1,7 @@
/******************************************************************************
*
* Module Name: utcopy - Internal to external object translation utilities
- * $Revision: 114 $
+ * $Revision: 115 $
*
*****************************************************************************/
@@ -507,25 +507,23 @@ AcpiUtCopyEsimpleToIsimple (
break;
default:
- /*
- * Whatever other type -- it is not supported
- */
+ /* All other types are not supported */
+
return_ACPI_STATUS (AE_SUPPORT);
}
- switch (ExternalObject->Type)
- {
-
/* Must COPY string and buffer contents */
+ switch (ExternalObject->Type)
+ {
case ACPI_TYPE_STRING:
InternalObject->String.Pointer =
ACPI_MEM_CALLOCATE ((ACPI_SIZE) ExternalObject->String.Length + 1);
if (!InternalObject->String.Pointer)
{
- return_ACPI_STATUS (AE_NO_MEMORY);
+ goto ErrorExit;
}
ACPI_MEMCPY (InternalObject->String.Pointer,
@@ -542,7 +540,7 @@ AcpiUtCopyEsimpleToIsimple (
ACPI_MEM_CALLOCATE (ExternalObject->Buffer.Length);
if (!InternalObject->Buffer.Pointer)
{
- return_ACPI_STATUS (AE_NO_MEMORY);
+ goto ErrorExit;
}
ACPI_MEMCPY (InternalObject->Buffer.Pointer,
@@ -565,6 +563,11 @@ AcpiUtCopyEsimpleToIsimple (
*RetInternalObject = InternalObject;
return_ACPI_STATUS (AE_OK);
+
+
+ErrorExit:
+ AcpiUtRemoveReference (InternalObject);
+ return_ACPI_STATUS (AE_NO_MEMORY);
}
@@ -845,7 +848,7 @@ AcpiUtCopyIelementToIelement (
Status = AcpiUtCopySimpleObject (SourceObject, TargetObject);
if (ACPI_FAILURE (Status))
{
- return (Status);
+ goto ErrorExit;
}
*ThisTargetPtr = TargetObject;
@@ -882,8 +885,8 @@ AcpiUtCopyIelementToIelement (
sizeof (void *));
if (!TargetObject->Package.Elements)
{
- ACPI_MEM_FREE (TargetObject);
- return (AE_NO_MEMORY);
+ Status = AE_NO_MEMORY;
+ goto ErrorExit;
}
/*
@@ -903,6 +906,10 @@ AcpiUtCopyIelementToIelement (
}
return (Status);
+
+ErrorExit:
+ AcpiUtRemoveReference (TargetObject);
+ return (Status);
}
OpenPOWER on IntegriCloud