diff options
Diffstat (limited to 'sys/contrib/dev/acpica/dswexec.c')
-rw-r--r-- | sys/contrib/dev/acpica/dswexec.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/sys/contrib/dev/acpica/dswexec.c b/sys/contrib/dev/acpica/dswexec.c index 316442b..f90dd08 100644 --- a/sys/contrib/dev/acpica/dswexec.c +++ b/sys/contrib/dev/acpica/dswexec.c @@ -2,7 +2,7 @@ * * Module Name: dswexec - Dispatcher method execution callbacks; * dispatch to interpreter. - * $Revision: 95 $ + * $Revision: 96 $ * *****************************************************************************/ @@ -443,7 +443,6 @@ AcpiDsExecEndOp ( UINT32 OpClass; ACPI_PARSE_OBJECT *NextOp; ACPI_PARSE_OBJECT *FirstArg; - UINT32 i; ACPI_FUNCTION_TRACE_PTR ("DsExecEndOp", WalkState); @@ -526,16 +525,7 @@ AcpiDsExecEndOp ( /* Always delete the argument objects and clear the operand stack */ - for (i = 0; i < WalkState->NumOperands; i++) - { - /* - * Remove a reference to all operands, including both - * "Arguments" and "Targets". - */ - AcpiUtRemoveReference (WalkState->Operands[i]); - WalkState->Operands[i] = NULL; - } - WalkState->NumOperands = 0; + AcpiDsClearOperands (WalkState); /* * If a result object was returned from above, push it on the @@ -601,6 +591,9 @@ AcpiDsExecEndOp ( Status = AcpiDsResolveOperands (WalkState); if (ACPI_FAILURE (Status)) { + /* On error, clear all resolved operands */ + + AcpiDsClearOperands (WalkState); break; } |