diff options
author | Eliot Horowitz <eliot@10gen.com> | 2008-07-17 09:26:42 -0400 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2008-07-17 09:26:42 -0400 |
commit | d195086cb879b0251d2203ea75d0250a8a878024 (patch) | |
tree | fe0bcbca4b29c47b7bb5c7a073560509b9ffb567 | |
parent | b9410e381fa4accda1b3a763926f0b573b94fa8f (diff) | |
download | mongo-d195086cb879b0251d2203ea75d0250a8a878024.tar.gz |
safemalloc
slight perf. hit
we can always just do #define safemalloc malloc
someone should look at realloc,calloc, etc...
-rw-r--r-- | db/btree.cpp | 2 | ||||
-rw-r--r-- | db/db.cpp | 6 | ||||
-rw-r--r-- | db/javajs.cpp | 4 | ||||
-rw-r--r-- | db/jsobj.h | 2 | ||||
-rw-r--r-- | grid/message.cpp | 2 | ||||
-rw-r--r-- | stdafx.h | 8 |
6 files changed, 16 insertions, 8 deletions
diff --git a/db/btree.cpp b/db/btree.cpp index 46be1b7e99a..ce0c9901050 100644 --- a/db/btree.cpp +++ b/db/btree.cpp @@ -404,7 +404,7 @@ bool BtreeBucket::unindex(const DiskLoc& thisLoc, IndexDetails& id, JSObj& key, } BtreeBucket* BtreeBucket::allocTemp() { - BtreeBucket *b = (BtreeBucket*) malloc(BucketSize); + BtreeBucket *b = (BtreeBucket*) safemalloc(BucketSize); b->init(); return b; } diff --git a/db/db.cpp b/db/db.cpp index aba19dd06e1..188a303fe74 100644 --- a/db/db.cpp +++ b/db/db.cpp @@ -234,7 +234,7 @@ void receivedQuery(DbResponse& dbresponse, /*AbstractMessagingPort& dbMsgPort, * problem() << " Caught Assertion in runQuery ns:" << ns << endl; cout << " ntoskip:" << ntoskip << " ntoreturn:" << ntoreturn << '\n'; cout << " query:" << query.toString() << '\n'; - msgdata = (QueryResult*) malloc(sizeof(QueryResult)); + msgdata = (QueryResult*) safemalloc(sizeof(QueryResult)); QueryResult *qr = msgdata; qr->_data[0] = 0; qr->_data[1] = 0; @@ -411,7 +411,7 @@ void jniCallback(Message& m, Message& out) // on a query, the Message must have m.freeIt true so that the buffer data can be // retained by cursors. As freeIt is false, we make a copy here. assert( m.data->len > 0 && m.data->len < 32000000 ); - Message copy(malloc(m.data->len), true); + Message copy(safemalloc(m.data->len), true); memcpy(copy.data, m.data, m.data->len); DbResponse dbr; receivedQuery(dbr, copy, ss, false); @@ -749,7 +749,7 @@ void initAndListen(int listenPort, const char *dbPath, const char *appserverLoc */ if (dbPath && dbPath[strlen(dbPath)-1] != '/') { - char *t = (char *) malloc(strlen(dbPath) + 2); + char *t = (char *) safemalloc(strlen(dbPath) + 2); strcpy(t, dbPath); strcat(t, "/"); diff --git a/db/javajs.cpp b/db/javajs.cpp index d935d76f3ca..065da4ddf3d 100644 --- a/db/javajs.cpp +++ b/db/javajs.cpp @@ -103,7 +103,7 @@ JavaJSImpl::JavaJSImpl(const char *appserverPath){ ss << colon << getenv( "CLASSPATH" ); string s = ss.str(); - char * p = (char *)malloc( s.size() * 4 ); + char * p = (char *)safemalloc( s.size() * 4 ); strcpy( p , s.c_str() ); char *q = p; #if defined(_WIN32) @@ -288,7 +288,7 @@ JSObj JavaJSImpl::scopeGetObject( jlong id , const char * field ) { int guess = _getEnv()->CallStaticIntMethod( _dbhook , _scopeGuessObjectSize , id , _getEnv()->NewStringUTF( field ) ); - char * buf = (char *) malloc(guess); + char * buf = (char *) safemalloc(guess); jobject bb = _getEnv()->NewDirectByteBuffer( (void*)buf , guess ); jassert( bb ); diff --git a/db/jsobj.h b/db/jsobj.h index c3dc8b8e960..8ff8eff7d3c 100644 --- a/db/jsobj.h +++ b/db/jsobj.h @@ -510,7 +510,7 @@ inline JSObj JSObj::copy() { if( isEmpty() ) return *this; - char *p = (char*) malloc(objsize()); + char *p = (char*) safemalloc(objsize()); memcpy(p, objdata(), objsize()); return JSObj(p, true); } diff --git a/grid/message.cpp b/grid/message.cpp index d099ded693e..b537abd045a 100644 --- a/grid/message.cpp +++ b/grid/message.cpp @@ -138,7 +138,7 @@ bool MessagingPort::recv(Message& m) { } int z = (len+1023)&0xfffffc00; assert(z>=len); - MsgData *md = (MsgData *) malloc(z); + MsgData *md = (MsgData *) safemalloc(z); md->len = len; if ( len <= 0 ){ @@ -140,3 +140,11 @@ using namespace boost::filesystem; #include "util/goodies.h" #include "util/log.h" +inline void * safemalloc( size_t s ){ + void * d = malloc( s ); + if ( ! d ){ + cerr << "malloc failed" << endl; + assert( 0 ); + } + return d; +} |