From 95be0b890674763aa69313d501df2a067f80eb68 Mon Sep 17 00:00:00 2001 From: Mathias Stearn Date: Wed, 7 Jul 2010 16:12:16 -0400 Subject: use boost smart_ptrs in mapreduce --- db/mr.cpp | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/db/mr.cpp b/db/mr.cpp index 210dfcab1d5..6040b4da393 100644 --- a/db/mr.cpp +++ b/db/mr.cpp @@ -49,7 +49,7 @@ namespace mongo { BSONObj key; BSONObjBuilder reduceArgs( sizeEstimate ); - BSONArrayBuilder * valueBuilder = 0; + boost::scoped_ptr valueBuilder; int sizeSoFar = 0; unsigned n = 0; @@ -59,8 +59,8 @@ namespace mongo { if ( n == 0 ){ reduceArgs.append( keyE ); key = keyE.wrap(); - valueBuilder = new BSONArrayBuilder( reduceArgs.subarrayStart( "values" ) ); sizeSoFar = 5 + keyE.size(); + valueBuilder.reset(new BSONArrayBuilder( reduceArgs.subarrayStart( "values" ) )); } BSONElement ee = j.next(); @@ -77,7 +77,6 @@ namespace mongo { } assert(valueBuilder); valueBuilder->done(); - delete valueBuilder; BSONObj args = reduceArgs.obj(); s->invokeSafe( reduce , args ); @@ -303,21 +302,17 @@ namespace mongo { class MRTL { public: - MRTL( MRState& state ) : _state( state ){ - _temp = new InMemory(); + MRTL( MRState& state ) + : _state( state ) + , _temp(new InMemory()) + { _size = 0; numEmits = 0; } - ~MRTL(){ - delete _temp; - } - void reduceInMemory(){ - - InMemory * old = _temp; - InMemory * n = new InMemory(); - _temp = n; + boost::shared_ptr old = _temp; + _temp.reset(new InMemory()); _size = 0; for ( InMemory::iterator i=old->begin(); i!=old->end(); i++ ){ @@ -334,9 +329,6 @@ namespace mongo { insert( res ); } } - - delete( old ); - } void dump(){ @@ -384,7 +376,7 @@ namespace mongo { MRState& _state; - InMemory * _temp; + boost::shared_ptr _temp; long _size; public: -- cgit v1.2.1