check for self-assignment in operator=

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51123 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2008-01-09 04:08:33 +00:00
parent c6ed07281f
commit 162e998c2f
12 changed files with 102 additions and 62 deletions

View File

@@ -22,8 +22,8 @@
like the old class.
*/
#ifndef _WX_LISTH__
#define _WX_LISTH__
#ifndef _WX_LIST_H_
#define _WX_LIST_H_
// -----------------------------------------------------------------------------
// headers
@@ -469,7 +469,7 @@ protected:
virtual void DeleteData() { }
public:
// for wxList::iterator
void** GetDataPtr() const { return &(((wxNodeBase*)this)->m_data); }
void** GetDataPtr() const { return &(wx_const_cast(wxNodeBase*, this)->m_data); }
private:
// optional key stuff
wxListKeyValue m_key;
@@ -732,7 +732,7 @@ private:
: wxListBase(count, (void **)elements) { } \
\
name& operator=(const name& list) \
{ Assign(list); return *this; } \
{ if (&list != this) Assign(list); return *this; } \
\
nodetype *GetFirst() const \
{ return (nodetype *)wxListBase::GetFirst(); } \
@@ -1178,7 +1178,7 @@ public:
#if !wxUSE_STL
wxList& operator=(const wxList& list)
{ Assign(list); return *this; }
{ if (&list != this) Assign(list); return *this; }
// compatibility methods
void Sort(wxSortCompareFunction compfunc) { wxListBase::Sort(compfunc); }
@@ -1214,7 +1214,14 @@ public:
// inefficient!)
wxStringList(const wxStringList& other) : wxStringListBase() { DeleteContents(true); DoCopy(other); }
wxStringList& operator=(const wxStringList& other)
{ Clear(); DoCopy(other); return *this; }
{
if (&other != this)
{
Clear();
DoCopy(other);
}
return *this;
}
// operations
// makes a copy of the string