]> git.saurik.com Git - wxWidgets.git/commitdiff
Fixed a problem in the demo and plugged a potential leak in SetDashes
authorRobin Dunn <robin@alldunn.com>
Mon, 19 Nov 2001 20:43:04 +0000 (20:43 +0000)
committerRobin Dunn <robin@alldunn.com>
Mon, 19 Nov 2001 20:43:04 +0000 (20:43 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12493 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/demo/wxScrolledWindow.py
wxPython/src/gdi.i
wxPython/src/gtk/gdi.cpp

index ca1f8f66197c75010d432f865a93c39fa23df7a2..bb679ceb4475a42f55f788f629804db547dcb4fb 100644 (file)
@@ -88,14 +88,13 @@ class MyCanvas(wxScrolledWindow):
         for style in [wxDOT, wxLONG_DASH, wxSHORT_DASH, wxDOT_DASH, wxUSER_DASH]:
             pen = wxPen("DARK ORCHID", 1, style)
             if style == wxUSER_DASH:
-                pen.SetDashes([0, 1, 2, 3, 4, 5, 6, 7, 8])
+                pen.SetDashes([1, 2, 3, 4, 5, 6, 7, 8])
                 pen.SetColour("RED")
 
             dc.SetPen(pen)
             dc.DrawLine(300, y, 400, y)
             y = y + 10
 
-
         self.DrawSavedLines(dc)
         dc.EndDrawing()
 
index 46323e758959676c4c9ad19810efb648fb4df944..e7c4ff61901b92ac983ff7a514bf834c7e6422f5 100644 (file)
@@ -628,6 +628,11 @@ public:
 
 
 
+
+// The list of ints for the dashes needs to exist for the life of the pen
+// so we make it part of the class to save it.  wxPyPen is aliased to wxPen
+// in _extras.py
+
 %{
 class wxPyPen : public wxPen {
 public:
@@ -636,13 +641,16 @@ public:
         { m_dash = NULL; }
     ~wxPyPen() {
         if (m_dash)
-            delete m_dash;
+            delete [] m_dash;
     }
 
     void SetDashes(int nb_dashes, const wxDash *dash) {
+        if (m_dash)
+            delete [] m_dash;
         m_dash = new wxDash[nb_dashes];
-        for (int i=0; i<nb_dashes; i++)
+        for (int i=0; i<nb_dashes; i++) {
             m_dash[i] = dash[i];
+        }
         wxPen::SetDashes(nb_dashes, m_dash);
     }
 
@@ -652,7 +660,6 @@ private:
 %}
 
 
-
 class wxPyPen : public wxPen {
 public:
     wxPyPen(wxColour& colour, int width=1, int style=wxSOLID);
@@ -663,6 +670,7 @@ public:
 
 
 
+
 class wxPenList : public wxObject {
 public:
 
index 199a67566d4affcf09fad9e921a83ef95b06ae90..ab7f5ed4c6d1d602426123ba9d9d248cd186373a 100644 (file)
@@ -190,13 +190,16 @@ public:
         { m_dash = NULL; }
     ~wxPyPen() {
         if (m_dash)
-            delete m_dash;
+            delete [] m_dash;
     }
 
     void SetDashes(int nb_dashes, const wxDash *dash) {
+        if (m_dash)
+            delete [] m_dash;
         m_dash = new wxDash[nb_dashes];
-        for (int i=0; i<nb_dashes; i++)
+        for (int i=0; i<nb_dashes; i++) {
             m_dash[i] = dash[i];
+        }
         wxPen::SetDashes(nb_dashes, m_dash);
     }