diff --git a/jstests/eval9.js b/jstests/eval9.js index 3d43ca97fd8..cfa1f58d5e6 100644 --- a/jstests/eval9.js +++ b/jstests/eval9.js @@ -6,3 +6,14 @@ for ( var i=0; ilength; i++ ){ + jsid id = properties->vector[i]; + jsval nameval; + assert( JS_IdToValue( _context ,id , &nameval ) ); + string name = toString( nameval ); + if ( name == "_id" ) + continue; + + append( b , name , getProperty( o , name.c_str() ) , orig[name].type() ); + } + + JS_DestroyIdArray( _context , properties ); } - JSIdArray * properties = JS_Enumerate( _context , o ); - assert( properties ); - - for ( jsint i=0; ilength; i++ ){ - jsid id = properties->vector[i]; - jsval nameval; - assert( JS_IdToValue( _context ,id , &nameval ) ); - string name = toString( nameval ); - if ( name == "_id" ) - continue; - - append( b , name , getProperty( o , name.c_str() ) , orig[name].type() ); - } - - JS_DestroyIdArray( _context , properties ); - return b.obj(); } diff --git a/scripting/sm_db.cpp b/scripting/sm_db.cpp index 309638d303c..9dba3382d77 100644 --- a/scripting/sm_db.cpp +++ b/scripting/sm_db.cpp @@ -688,7 +688,7 @@ namespace mongo { ); return true; } - + #if defined( SM16 ) || defined( MOZJS ) { jsdouble d = js_DateGetMsecSinceEpoch( c->_context , o ); @@ -705,6 +705,14 @@ namespace mongo { } #endif + + if ( JS_InstanceOf( c->_context , o , &dbquery_class , 0 ) || + JS_InstanceOf( c->_context , o , &mongo_class , 0 ) || + JS_InstanceOf( c->_context , o , &db_collection_class , 0 ) ){ + b.append( name.c_str() , c->toString( OBJECT_TO_JSVAL(o) ) ); + return true; + } + return false; } @@ -716,5 +724,5 @@ namespace mongo { return JS_InstanceOf( cx , o, &js_DateClass, 0 ); #endif } - + }