changeset 26:fd185c6a74d2

Clean up local references
author Chris Cannam
date Wed, 14 Nov 2012 21:47:31 +0000
parents cd430fbf6795
children 59b4150c69cb
files src/Plugin.cpp
diffstat 1 files changed, 9 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/Plugin.cpp	Wed Nov 14 18:10:40 2012 +0000
+++ b/src/Plugin.cpp	Wed Nov 14 21:47:31 2012 +0000
@@ -176,9 +176,12 @@
     std::string dname = "TimeDomain";
     if (d == Plugin::FrequencyDomain) dname = "FrequencyDomain";
 
-    return env->CallStaticObjectMethod
-	(ourEnumClass, getEnumValueOfMethod(env), ourEnumClass,
-	 env->NewStringUTF(dname.c_str())); //!!! string leaked!
+    jstring sn = env->NewStringUTF(dname.c_str());
+    jobject e = env->CallStaticObjectMethod
+	(ourEnumClass, getEnumValueOfMethod(env), ourEnumClass, sn);
+
+    env->DeleteLocalRef(sn);
+    return e;
 }
 
 jint
@@ -252,9 +255,10 @@
 	    break;
 	}
 
+	jstring sn = env->NewStringUTF(stype);
 	jobject sampleType = env->CallStaticObjectMethod
-    	    (sampleTypeClass, getEnumValueOfMethod(env),
-	     sampleTypeClass, env->NewStringUTF(stype));//!!! string leaked!
+    	    (sampleTypeClass, getEnumValueOfMethod(env), sampleTypeClass, sn);
+	env->DeleteLocalRef(sn);
 
 	setObjectField(env, desc, "sampleType",
 		       "Lorg/vamp_plugins/OutputDescriptor$SampleType;",