From: Gonzalo A. <ga...@us...> - 2006-09-08 20:57:52
|
Update of /cvsroot/mod-c/ehtml/src In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv16003/src Modified Files: MemBuf.cpp Log Message: * Added operator =. * Bugfix in resize(), ~MemBuf(). Index: MemBuf.cpp =================================================================== RCS file: /cvsroot/mod-c/ehtml/src/MemBuf.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** MemBuf.cpp 8 Sep 2006 14:22:47 -0000 1.1 --- MemBuf.cpp 8 Sep 2006 20:57:47 -0000 1.2 *************** *** 11,23 **** MemBuf::~MemBuf() { ! if (_b && _b->_refcnt == 1) { ! delete _b; ! } else { ! _b->_refcnt--; } } void MemBuf::resize(size_t s) { ! assert(_b != NULL); void* p = realloc(_b->_buf, s); if (p == NULL) --- 11,28 ---- MemBuf::~MemBuf() { ! if (_b) { ! if (_b->_refcnt == 1) { ! delete _b; ! } else { ! _b->_refcnt--; ! } } } void MemBuf::resize(size_t s) { ! if (_b == NULL) { ! _b = new Buf(malloc(s),s); ! return; ! } void* p = realloc(_b->_buf, s); if (p == NULL) *************** *** 31,34 **** --- 36,52 ---- } + MemBuf& MemBuf::operator = (const MemBuf& mb) { + if (_b) { + if (_b->_refcnt == 1) { + delete _b; + } else { + _b->_refcnt--; + } + } + _b = mb._b; + ++_b->_refcnt; + return *this; + } + using namespace std; |