From: Robin Dunn Date: Thu, 18 Oct 2001 01:30:53 +0000 (+0000) Subject: reference count bugs in DrawXXXList fixed X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/76e280e7965fae379dfd590df9ce17b9697b62d1 reference count bugs in DrawXXXList fixed git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12052 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/wxPython/src/gdi.i b/wxPython/src/gdi.i index 41e9a47f33..dae285e482 100644 --- a/wxPython/src/gdi.i +++ b/wxPython/src/gdi.i @@ -829,6 +829,10 @@ public: %addmethods { + // NOTE: These methods are VERY SIMILAR in implentation. It would be + // nice to factor out code and or turn them into a set of + // template-like macros. + // Draw a point for every set of coordinants in pyPoints, optionally // setting a new pen for each PyObject* _DrawPointList(PyObject* pyPoints, PyObject* pyPens) { @@ -860,6 +864,8 @@ public: obj = PySequence_GetItem(pyPens, i); } if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { + if (!isFastPens) + Py_DECREF(obj); goto err1; } @@ -876,7 +882,8 @@ public: obj = PySequence_GetItem(pyPoints, i); } if (! _2int_seq_helper(obj, &x1, &y1)) { - Py_DECREF(obj); + if (!isFastPens) + Py_DECREF(obj); goto err0; } @@ -930,6 +937,8 @@ public: obj = PySequence_GetItem(pyPens, i); } if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { + if (!isFastPens) + Py_DECREF(obj); goto err1; } @@ -946,7 +955,8 @@ public: obj = PySequence_GetItem(pyLines, i); } if (! _4int_seq_helper(obj, &x1, &y1, &x2, &y2)) { - Py_DECREF(obj); + if (!isFastPens) + Py_DECREF(obj); goto err0; } diff --git a/wxPython/src/msw/gdi.cpp b/wxPython/src/msw/gdi.cpp index 4bbf57cda2..57e36348d2 100644 --- a/wxPython/src/msw/gdi.cpp +++ b/wxPython/src/msw/gdi.cpp @@ -9481,6 +9481,8 @@ static PyObject * wxDC__DrawPointList(wxDC *self,PyObject * pyPoints,PyObject * obj = PySequence_GetItem(pyPens, i); } if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { + if (!isFastPens) + Py_DECREF(obj); goto err1; } @@ -9497,7 +9499,8 @@ static PyObject * wxDC__DrawPointList(wxDC *self,PyObject * pyPoints,PyObject * obj = PySequence_GetItem(pyPoints, i); } if (! _2int_seq_helper(obj, &x1, &y1)) { - Py_DECREF(obj); + if (!isFastPens) + Py_DECREF(obj); goto err0; } @@ -9586,6 +9589,8 @@ static PyObject * wxDC__DrawLineList(wxDC *self,PyObject * pyLines,PyObject * py obj = PySequence_GetItem(pyPens, i); } if (SWIG_GetPtrObj(obj, (void **) &pen, "_wxPen_p")) { + if (!isFastPens) + Py_DECREF(obj); goto err1; } @@ -9602,7 +9607,8 @@ static PyObject * wxDC__DrawLineList(wxDC *self,PyObject * pyLines,PyObject * py obj = PySequence_GetItem(pyLines, i); } if (! _4int_seq_helper(obj, &x1, &y1, &x2, &y2)) { - Py_DECREF(obj); + if (!isFastPens) + Py_DECREF(obj); goto err0; }