Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 165190
b: refs/heads/master
c: dbdc8f0
h: refs/heads/master
v: v3
  • Loading branch information
Bob Moore authored and Len Brown committed Aug 27, 2009
1 parent 66e406a commit ae12e19
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 15b8dd53f5ffaf8e2d9095c423f713423f576c0f
refs/heads/master: dbdc8f02fe8339686623c84745ba15b0f4f889a1
27 changes: 15 additions & 12 deletions trunk/drivers/acpi/acpica/nspredef.c
Original file line number Diff line number Diff line change
Expand Up @@ -1046,22 +1046,25 @@ acpi_ns_repair_object(u32 expected_btypes,
ACPI_MEMCPY(new_object->string.pointer,
return_object->buffer.pointer, length);

/* Install the new return object */

acpi_ut_remove_reference(return_object);
*return_object_ptr = new_object;

/*
* If the object is a package element, we need to:
* 1. Decrement the reference count of the orignal object, it was
* incremented when building the package
* 2. Increment the reference count of the new object, it will be
* decremented when releasing the package
* If the original object is a package element, we need to:
* 1. Set the reference count of the new object to match the
* reference count of the old object.
* 2. Decrement the reference count of the original object.
*/
if (package_index != ACPI_NOT_PACKAGE) {
acpi_ut_remove_reference(return_object);
acpi_ut_add_reference(new_object);
new_object->common.reference_count =
return_object->common.reference_count;

if (return_object->common.reference_count > 1) {
return_object->common.reference_count--;
}
}

/* Delete old object, install the new return object */

acpi_ut_remove_reference(return_object);
*return_object_ptr = new_object;
return (AE_OK);

default:
Expand Down

0 comments on commit ae12e19

Please sign in to comment.