Issue #12483: ctypes: Fix a crash when the destruction of a callback
object triggers the garbage collector.
This commit is contained in:
parent
1d7deafeea
commit
bbe46d63ee
|
@ -134,6 +134,14 @@ class Callbacks(unittest.TestCase):
|
||||||
if isinstance(x, X)]
|
if isinstance(x, X)]
|
||||||
self.assertEqual(len(live), 0)
|
self.assertEqual(len(live), 0)
|
||||||
|
|
||||||
|
def test_issue12483(self):
|
||||||
|
import gc
|
||||||
|
class Nasty:
|
||||||
|
def __del__(self):
|
||||||
|
gc.collect()
|
||||||
|
CFUNCTYPE(None)(lambda x=Nasty(): None)
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
WINFUNCTYPE
|
WINFUNCTYPE
|
||||||
except NameError:
|
except NameError:
|
||||||
|
|
|
@ -65,6 +65,9 @@ Tests
|
||||||
Extension Modules
|
Extension Modules
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #12483: ctypes: Fix a crash when the destruction of a callback
|
||||||
|
object triggers the garbage collector.
|
||||||
|
|
||||||
- Issue #12950: Fix passing file descriptors in multiprocessing, under
|
- Issue #12950: Fix passing file descriptors in multiprocessing, under
|
||||||
OpenIndiana/Illumos.
|
OpenIndiana/Illumos.
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ static void
|
||||||
CThunkObject_dealloc(PyObject *_self)
|
CThunkObject_dealloc(PyObject *_self)
|
||||||
{
|
{
|
||||||
CThunkObject *self = (CThunkObject *)_self;
|
CThunkObject *self = (CThunkObject *)_self;
|
||||||
|
PyObject_GC_UnTrack(self);
|
||||||
Py_XDECREF(self->converters);
|
Py_XDECREF(self->converters);
|
||||||
Py_XDECREF(self->callable);
|
Py_XDECREF(self->callable);
|
||||||
Py_XDECREF(self->restype);
|
Py_XDECREF(self->restype);
|
||||||
|
|
Loading…
Reference in New Issue