| Index: jni/JniJsValue.cpp | 
| diff --git a/jni/JniJsValue.cpp b/jni/JniJsValue.cpp | 
| index 2cf5478c2c3391f831a45a697731716b4eb621d6..6b9fb0f627f25ce0d7c959afa0bb9914579564e7 100644 | 
| --- a/jni/JniJsValue.cpp | 
| +++ b/jni/JniJsValue.cpp | 
| @@ -144,7 +144,14 @@ jobject NewJniJsValue(JNIEnv* env, const AdblockPlus::JsValuePtr& jsValue, jclas | 
| jclass clazz = jsValueClass ? jsValueClass : env->FindClass(PKG("JsValue")); | 
| jmethodID ctor = env->GetMethodID(clazz, "<init>", "(J)V"); | 
| jlong ptr = JniPtrToLong(new AdblockPlus::JsValuePtr(jsValue)); | 
| - return env->NewObject(clazz, ctor, ptr); | 
| + jobject ret = env->NewObject(clazz, ctor, ptr); | 
| + | 
| + if (!jsValueClass) | 
| + { | 
| + env->DeleteLocalRef(clazz); | 
| + } | 
| + | 
| + return ret; | 
| } | 
| AdblockPlus::JsValue* JniGetJsValue(jlong ptr) | 
| @@ -163,7 +170,8 @@ jobject JniJsValueListToArrayList(JNIEnv* env, AdblockPlus::JsValueList& list) | 
| for (AdblockPlus::JsValueList::iterator it = list.begin(), end = list.end(); it != end; ++it) | 
| { | 
| - JniAddObjectToList(env, arrayList, NewJniJsValue(env, *it)); | 
| + JniAddObjectToList(env, arrayList, | 
| + *JniLocalReference<jobject>(env, NewJniJsValue(env, *it))); | 
| } | 
| return arrayList; |