diff options
Diffstat (limited to 'scripting/engine_java.cpp')
-rw-r--r-- | scripting/engine_java.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/scripting/engine_java.cpp b/scripting/engine_java.cpp index fc8945f..5738816 100644 --- a/scripting/engine_java.cpp +++ b/scripting/engine_java.cpp @@ -43,7 +43,7 @@ namespace mongo { -#include "../util/message.h" +#include "../util/net/message.h" #include "../db/db.h" using namespace std; @@ -405,15 +405,17 @@ namespace mongo { if ( guess == 0 ) return BSONObj(); - char * buf = (char *) malloc(guess); - jobject bb = _getEnv()->NewDirectByteBuffer( (void*)buf , guess ); + BSONObj::Holder* holder = (BSONObj::Holder*) malloc(guess + sizeof(unsigned)); + holder->zero() + + jobject bb = _getEnv()->NewDirectByteBuffer( (void*)holder->data , guess ); jassert( bb ); int len = _getEnv()->CallStaticIntMethod( _dbhook , _scopeGetObject , id , _getEnv()->NewStringUTF( field ) , bb ); _getEnv()->DeleteLocalRef( bb ); jassert( len > 0 && len < guess ); - BSONObj obj(buf, true); + BSONObj obj(holder); assert( obj.objsize() <= guess ); return obj; } |