Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Python: Checkins

cpython: Fix refcounting issue with extension types in tkinter.

 

 

Python checkins RSS feed   Index | Next | Previous | View Threaded


python-checkins at python

Aug 10, 2013, 3:22 PM

Post #1 of 1 (8 views)
Permalink
cpython: Fix refcounting issue with extension types in tkinter.

http://hg.python.org/cpython/rev/4d0c938870bc
changeset: 85111:4d0c938870bc
user: Antoine Pitrou <solipsis [at] pitrou>
date: Sun Aug 11 00:22:30 2013 +0200
summary:
Fix refcounting issue with extension types in tkinter.
(issue #15721)

files:
Misc/NEWS | 2 ++
Modules/_tkinter.c | 9 +++++++++
2 files changed, 11 insertions(+), 0 deletions(-)


diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -24,6 +24,8 @@
Library
-------

+- Fix refcounting issue with extension types in tkinter.
+
- Issue #8112: xlmrpc.server's DocXMLRPCServer server no longer raises an error
if methods have annotations; it now correctly displays the annotations.

diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -516,6 +516,7 @@
v = PyObject_New(TkappObject, (PyTypeObject *) Tkapp_Type);
if (v == NULL)
return NULL;
+ Py_INCREF(Tkapp_Type);

v->interp = Tcl_CreateInterp();
v->wantobjects = wantobjects;
@@ -674,6 +675,7 @@
self = PyObject_New(PyTclObject, (PyTypeObject *) PyTclObject_Type);
if (self == NULL)
return NULL;
+ Py_INCREF(PyTclObject_Type);
Tcl_IncrRefCount(arg);
self->value = arg;
self->string = NULL;
@@ -683,9 +685,11 @@
static void
PyTclObject_dealloc(PyTclObject *self)
{
+ PyObject *tp = (PyObject *) Py_TYPE(self);
Tcl_DecrRefCount(self->value);
Py_XDECREF(self->string);
PyObject_Del(self);
+ Py_DECREF(tp);
}

static char*
@@ -2196,6 +2200,7 @@
v = PyObject_New(TkttObject, (PyTypeObject *) Tktt_Type);
if (v == NULL)
return NULL;
+ Py_INCREF(Tktt_Type);

Py_INCREF(func);
v->token = NULL;
@@ -2211,10 +2216,12 @@
{
TkttObject *v = (TkttObject *)self;
PyObject *func = v->func;
+ PyObject *tp = (PyObject *) Py_TYPE(self);

Py_XDECREF(func);

PyObject_Del(self);
+ Py_DECREF(tp);
}

static PyObject *
@@ -2520,11 +2527,13 @@
static void
Tkapp_Dealloc(PyObject *self)
{
+ PyObject *tp = (PyObject *) Py_TYPE(self);
/*CHECK_TCL_APPARTMENT;*/
ENTER_TCL
Tcl_DeleteInterp(Tkapp_Interp(self));
LEAVE_TCL
PyObject_Del(self);
+ Py_DECREF(tp);
DisableEventHook();
}


--
Repository URL: http://hg.python.org/cpython

Python checkins RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.