summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEliot Horowitz <eliot@10gen.com>2008-09-18 09:42:14 -0400
committerEliot Horowitz <eliot@10gen.com>2008-09-18 09:42:14 -0400
commit9ea5237869da33080b61af69442c780b997319b7 (patch)
treebb845f1ced7c0e860860760bc0eb9fdf40da3699
parent8216dc63c56cce87126d2a228a38fad2cddf3d44 (diff)
downloadmongo-9ea5237869da33080b61af69442c780b997319b7.tar.gz
leak fix for new jni methods
-rw-r--r--db/javajs.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/db/javajs.cpp b/db/javajs.cpp
index 55d00e7f81a..f0795e95888 100644
--- a/db/javajs.cpp
+++ b/db/javajs.cpp
@@ -300,7 +300,7 @@ int JavaJSImpl::scopeSetObject( jlong id , const char * field , JSObj * obj ){
_getEnv()->DeleteLocalRef( s1 );
if ( bb )
_getEnv()->DeleteLocalRef( bb );
-
+
return res;
}
@@ -310,18 +310,22 @@ int JavaJSImpl::scopeInit( jlong id , JSObj * obj ){
jobject bb = _getEnv()->NewDirectByteBuffer( (void*)(obj->objdata()) , (jlong)(obj->objsize()) );
jassert( bb );
-
- return _getEnv()->CallStaticBooleanMethod( _dbhook , _scopeInit , id , bb );
+
+ int res = _getEnv()->CallStaticBooleanMethod( _dbhook , _scopeInit , id , bb );
+ _getEnv()->DeleteLocalRef( bb );
+ return res;
}
int JavaJSImpl::scopeSetThis( jlong id , JSObj * obj ){
if ( ! obj )
return 0;
-
+
jobject bb = _getEnv()->NewDirectByteBuffer( (void*)(obj->objdata()) , (jlong)(obj->objsize()) );
jassert( bb );
- return _getEnv()->CallStaticBooleanMethod( _dbhook , _scopeSetThis , id , bb );
+ int res = _getEnv()->CallStaticBooleanMethod( _dbhook , _scopeSetThis , id , bb );
+ _getEnv()->DeleteLocalRef( bb );
+ return res;
}
// scope getters