From: Alex Rousskov Date: Sun, 29 Aug 2010 21:16:57 +0000 (-0600) Subject: Handle assignment to self correctly. X-Git-Tag: take1~320 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=596e3d5f059f84c8181513c27a354b0e46d3b7ba;p=thirdparty%2Fsquid.git Handle assignment to self correctly. Self-assignment probably does not happen in the current code. --- diff --git a/src/base/CbcPointer.h b/src/base/CbcPointer.h index 622d963f97..1283327022 100644 --- a/src/base/CbcPointer.h +++ b/src/base/CbcPointer.h @@ -48,10 +48,12 @@ public: /// support assigning a child cbc pointer to a parent cbc pointer template CbcPointer &operator =(const CbcPointer &o) { + if (this != &o) { // assignment to self clear(); cbc = o.raw(); // so that set() is accurate if (o.valid()) lock = cbdataReference(o->toCbdata()); + } return *this; } @@ -101,10 +103,12 @@ CbcPointer::~CbcPointer() template CbcPointer &CbcPointer::operator =(const CbcPointer &d) { + if (this != &d) { // assignment to self clear(); cbc = d.cbc; if (d.lock && cbdataReferenceValid(d.lock)) lock = cbdataReference(d.lock); + } return *this; }