Mercurial > hg > heapstats
changeset 212:67f3ad492a87
Bug 3294: Reference counter should be handled in TClassContainer::allClear()
Reviewed-by: ykubota
https://github.com/HeapStats/heapstats/pull/78
author | Yasumasa Suenaga <yasuenag@gmail.com> |
---|---|
date | Mon, 23 Jan 2017 18:49:27 +0900 |
parents | 586299f24c30 |
children | c0615b5719f6 |
files | ChangeLog agent/src/heapstats-engines/classContainer.cpp |
diffstat | 2 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Tue Jan 17 18:32:43 2017 +0900 +++ b/ChangeLog Mon Jan 23 18:49:27 2017 +0900 @@ -1,3 +1,7 @@ +2017-01-23 Yasumasa Suenaga <yasuenag@gmail.com> + + * Bug 3294: Reference counter should be handled in TClassContainer::allClear() + 2017-01-17 Yasumasa Suenaga <yasuenag@gmail.com> * Bug 3284: HeapStats Agent might crash when object children are scanned
--- a/agent/src/heapstats-engines/classContainer.cpp Tue Jan 17 18:32:43 2017 +0900 +++ b/agent/src/heapstats-engines/classContainer.cpp Mon Jan 23 18:49:27 2017 +0900 @@ -373,9 +373,12 @@ ++cur) { TObjectData *pos = (*cur).second; - if (likely(pos != NULL)) { - free(pos->className); - free(pos); + if (pos != NULL) { + atomic_inc(&pos->numRefsFromChildren, -1); + if (atomic_get(&pos->numRefsFromChildren) == 0) { + free(pos->className); + free(pos); + } } }