]> git.saurik.com Git - wxWidgets.git/commitdiff
Correct wxObjectDataPtr<> assignment from *T to not increase the ref count
authorRobert Roebling <robert@roebling.de>
Mon, 7 Jan 2008 15:12:46 +0000 (15:12 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 7 Jan 2008 15:12:46 +0000 (15:12 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51076 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/objectdataptr.tex
include/wx/object.h
samples/dataview/dataview.cpp

index d75a1bf10c5235560e11c1e0956e3aee3879eed6..f6777ff59cc1856d0bc1b5969fd191bea967e4e4 100644 (file)
@@ -146,8 +146,9 @@ counted object to which this class points.
 
 \constfunc{T*}{operator->}{\void}
 
-Gets a pointer to the reference counted object to which
-this class points. Same as \helpref{get}{wxobjectdataptrget}.
+Returns a pointer to the reference counted object to which
+this class points. If this the internal pointer is NULL,
+this method will assert in debug mode.
 
 \membersection{wxObjectDataPtr<T>::operator=}\label{wxobjectdataptroperatorassign}
 
index e24fc89e1c3a000468383475bf32a7a95a024623..df40c11d43c2ee40710fc6e320adfab5c8cc603d 100644 (file)
@@ -456,7 +456,12 @@ public:
     }
 
     T *get() const { return m_ptr; }
-    T *operator->() const { return get(); }
+    
+    T *operator->() const
+    { 
+        wxASSERT(m_ptr != NULL);    
+        return get(); 
+    }
 
     void reset(T *ptr)
     {
@@ -480,8 +485,6 @@ public:
         if (m_ptr) 
             m_ptr->DecRef(); 
         m_ptr = ptr; 
-        if (m_ptr)
-            m_ptr->IncRef(); 
         return *this;
     }
 
index 96477f0ae46ee194c011f0262a40942430e3e284..16546966153c085d57752f4ffcbb886d28c6eb89 100644 (file)
@@ -168,6 +168,11 @@ public:
             wxT("German Requiem"), wxT("Johannes Brahms"), 1868 ) );
         m_classicalMusicIsKnownToControl = false;
     }
+
+    ~MyMusicModel()
+    {
+        delete m_root;
+    }
     
     // helper method for wxLog
     
@@ -575,6 +580,7 @@ class MyFrame : public wxFrame
 {
 public:
     MyFrame(wxFrame *frame, const wxString &title, int x, int y, int w, int h);
+    ~MyFrame();
 
 public:
     void OnQuit(wxCommandEvent& event);
@@ -832,7 +838,7 @@ MyFrame::MyFrame(wxFrame *frame, const wxString &title, int x, int y, int w, int
     child = treectrl2->AppendItem( parent,wxT("Child 1"), 0 );
     child = treectrl2->AppendItem( parent,wxT("Child 2"), 0 );
     child = treectrl2->AppendItem( parent,wxT("Child 3"), 0 );
-    
+
     bottom_sizer->Add( treectrl2 );
     
     // main sizer
@@ -842,6 +848,11 @@ MyFrame::MyFrame(wxFrame *frame, const wxString &title, int x, int y, int w, int
     SetSizer( main_sizer );
 }
 
+MyFrame::~MyFrame()
+{
+    delete wxLog::SetActiveTarget(m_logOld);
+}
+
 void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) )
 {
     Close(true);