OSDN Git Service

Fix memory leak in JDWP object registry
authorSebastien Hertz <shertz@google.com>
Wed, 25 Jun 2014 20:06:12 +0000 (22:06 +0200)
committerSebastien Hertz <shertz@google.com>
Wed, 25 Jun 2014 20:19:11 +0000 (22:19 +0200)
Deletes ObjectRegistryEntry objects before clearing the maps.

Change-Id: Iaa30941fb8768b7294366a8f9855580cb29dadf5

runtime/jdwp/object_registry.cc

index d637a94..29d3c8a 100644 (file)
@@ -115,12 +115,13 @@ void ObjectRegistry::Clear() {
   // Delete all the JNI references.
   JNIEnv* env = self->GetJniEnv();
   for (const auto& pair : object_to_entry_) {
-    const ObjectRegistryEntry& entry = *pair.second;
-    if (entry.jni_reference_type == JNIWeakGlobalRefType) {
-      env->DeleteWeakGlobalRef(entry.jni_reference);
+    const ObjectRegistryEntry* entry = pair.second;
+    if (entry->jni_reference_type == JNIWeakGlobalRefType) {
+      env->DeleteWeakGlobalRef(entry->jni_reference);
     } else {
-      env->DeleteGlobalRef(entry.jni_reference);
+      env->DeleteGlobalRef(entry->jni_reference);
     }
+    delete entry;
   }
   // Clear the maps.
   object_to_entry_.clear();