]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/hashmap.h
fixed memory leak in wxXmlResource introduced when fixing wxVector<> usage (patch...
[wxWidgets.git] / include / wx / hashmap.h
index 1cff98219b868f71080b074a7e474f250e01c082..836c2e3e54d5915935549232bc58761f63d9e501 100644 (file)
@@ -144,8 +144,6 @@ public: \
         value_type m_value; \
     }; \
  \
-    CLASSEXP Iterator; \
-    friend CLASSEXP Iterator; \
 protected: \
     static void DeleteNode( _wxHashTable_NodeBase* node ) \
     { \
@@ -163,7 +161,7 @@ public: \
  \
         Iterator() : m_node(0), m_ht(0) {} \
         Iterator( Node* node, const Self* ht ) \
-            : m_node(node), m_ht((Self*)ht) {} \
+            : m_node(node), m_ht(wx_const_cast(Self*, ht)) {} \
         bool operator ==( const Iterator& it ) const \
             { return m_node == it.m_node; } \
         bool operator !=( const Iterator& it ) const \
@@ -186,6 +184,7 @@ public: \
             m_node = next ? next : GetNextNode(); \
         } \
     }; \
+    friend class Iterator; \
  \
 public: \
     CLASSEXP iterator : public Iterator \
@@ -205,7 +204,7 @@ public: \
         const_iterator() : Iterator() {} \
         const_iterator(iterator i) : Iterator(i) {} \
         const_iterator( Node* node, const Self* ht ) \
-            : Iterator( node, (Self*)ht ) {} \
+            : Iterator(node, wx_const_cast(Self*, ht)) {} \
         const_iterator& operator++() { PlusPlus();return *this; } \
         const_iterator operator++(int) { const_iterator it=*this;PlusPlus();return it; } \
         const_reference operator *() const { return m_node->m_value; } \
@@ -237,12 +236,15 @@ public: \
  \
     const Self& operator=( const Self& ht ) \
     { \
-         clear(); \
-         m_hasher = ht.m_hasher; \
-         m_equals = ht.m_equals; \
-         m_getKey = ht.m_getKey; \
-         m_items = ht.m_items; \
-         HashCopy( ht ); \
+         if (&ht != this) \
+         { \
+             clear(); \
+             m_hasher = ht.m_hasher; \
+             m_equals = ht.m_equals; \
+             m_getKey = ht.m_getKey; \
+             m_items = ht.m_items; \
+             HashCopy( ht ); \
+         } \
          return *this; \
     } \
  \
@@ -408,7 +410,8 @@ public: \
     typedef const KEY_T const_t1; \
     typedef const VALUE_T const_t2; \
  \
-    CLASSNAME( const const_t1& f, const const_t2& s ):first(t1(f)),second(t2(s)) {} \
+    CLASSNAME(const const_t1& f, const const_t2& s) \
+        : first(wx_const_cast(t1&, f)), second(wx_const_cast(t2&, s)) {} \
  \
     t1 first; \
     t2 second; \