changeset 62:9fb6779d97d1

Bug 3295: Incorrect condition for removing TObjectData instance Reviewed-by: ykubota https://github.com/HeapStats/heapstats/pull/79
author Yasumasa Suenaga <yasuenag@gmail.com>
date Mon, 23 Jan 2017 21:50:31 +0900
parents 9722a1848310
children 2836f23c1fbb
files agent/ChangeLog agent/src/classContainer.cpp
diffstat 2 files changed, 4 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/agent/ChangeLog	Mon Jan 23 18:50:37 2017 +0900
+++ b/agent/ChangeLog	Mon Jan 23 21:50:31 2017 +0900
@@ -1,6 +1,7 @@
 2017-01-23 Yasumasa Suenaga  <yasuenag@gmail.com>
 
 	* Bug 3294: Reference counter should be handled in TClassContainer::allClear()
+	* Bug 3295: Incorrect condition for removing TObjectData instance
 
 2017-01-17 Yasumasa Suenaga  <yasuenag@gmail.com>
 
--- a/agent/src/classContainer.cpp	Mon Jan 23 18:50:37 2017 +0900
+++ b/agent/src/classContainer.cpp	Mon Jan 23 21:50:31 2017 +0900
@@ -404,12 +404,9 @@
             cur != classMap->end(); ++cur) {
             TObjectData *pos = (*cur).second;
             
-            if (pos != NULL) {
-              atomic_inc(&pos->numRefsFromChildren, -1);
-              if (atomic_get(&pos->numRefsFromChildren) == 0) {
-                free(pos->className);
-                free(pos);
-              }
+            if ((pos != NULL) && (atomic_get(&pos->numRefsFromChildren) == 0)) {
+              free(pos->className);
+              free(pos);
             }
         }