diff options
author | Eliot Horowitz <eliot@10gen.com> | 2008-09-18 09:42:14 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2008-09-18 09:42:14 -0400 |
commit | 9ea5237869da33080b61af69442c780b997319b7 (patch) | |
tree | bb845f1ced7c0e860860760bc0eb9fdf40da3699 | |
parent | 8216dc63c56cce87126d2a228a38fad2cddf3d44 (diff) | |
download | mongo-9ea5237869da33080b61af69442c780b997319b7.tar.gz |
leak fix for new jni methods
-rw-r--r-- | db/javajs.cpp | 14 |
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 |