Skip to content

Commit

Permalink
Merge pull request #9580 from kjbracey-arm/sharedptr_reset
Browse files Browse the repository at this point in the history
Fix SharedPtr::reset
  • Loading branch information
0xc0170 authored Feb 4, 2019
2 parents e9648dd + 0b27c91 commit 6684570
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions platform/SharedPtr.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,10 +145,13 @@ class SharedPtr {
// Clean up by decrementing counter
decrement_counter();

_ptr = ptr;
if (ptr != NULL) {
// Allocate counter on the heap, so it can be shared
_counter = new uint32_t;
*_counter = 1;
} else {
_counter = NULL;
}
}

Expand Down Expand Up @@ -223,15 +226,15 @@ class SharedPtr {
/**
* @brief Decrement reference counter.
* @details If count reaches zero, free counter and delete object pointed to.
* Does not modify our own pointers - assumption is they will be overwritten
* or destroyed immediately afterwards.
*/
void decrement_counter()
{
if (_ptr != NULL) {
if (core_util_atomic_decr_u32(_counter, 1) == 0) {
delete _counter;
_counter = NULL;
delete _ptr;
_ptr = NULL;
}
}
}
Expand Down

0 comments on commit 6684570

Please sign in to comment.