diff options
author | Thomas Heller <theller@ctypes.org> | 2010-08-08 18:16:20 (GMT) |
---|---|---|
committer | Thomas Heller <theller@ctypes.org> | 2010-08-08 18:16:20 (GMT) |
commit | bf4cc5d469d9361ea1ea3db257fa7117c658f752 (patch) | |
tree | 666638be7e189969f80a0fc6b87fb0c5e4d9da10 | |
parent | 39d795d8c1a1b2feaff407a8d583eb2fc16f2475 (diff) | |
download | cpython-bf4cc5d469d9361ea1ea3db257fa7117c658f752.zip cpython-bf4cc5d469d9361ea1ea3db257fa7117c658f752.tar.gz cpython-bf4cc5d469d9361ea1ea3db257fa7117c658f752.tar.bz2 |
Fix issue6869: refcount problem in the _ctypes extension.
-rw-r--r-- | Misc/NEWS | 4 | ||||
-rw-r--r-- | Modules/_ctypes/_ctypes.c | 6 |
2 files changed, 9 insertions, 1 deletions
@@ -24,7 +24,9 @@ Core and Builtins Extensions ---------- -- Issue #5504 - ctypes should now work with systems where mmap can't +- Issue #6869: Fix a refcount problem in the _ctypes extension. + +- Issue #5504: ctypes should now work with systems where mmap can't be PROT_WRITE and PROT_EXEC. - Issue #9507: Named tuple repr will now automatically display the right diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 1f4c6a9..a6df55c 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -5312,36 +5312,42 @@ PyInit__ctypes(void) Struct_Type.tp_base = &PyCData_Type; if (PyType_Ready(&Struct_Type) < 0) return NULL; + Py_INCREF(&Struct_Type); PyModule_AddObject(m, "Structure", (PyObject *)&Struct_Type); Py_TYPE(&Union_Type) = &UnionType_Type; Union_Type.tp_base = &PyCData_Type; if (PyType_Ready(&Union_Type) < 0) return NULL; + Py_INCREF(&Union_Type); PyModule_AddObject(m, "Union", (PyObject *)&Union_Type); Py_TYPE(&PyCPointer_Type) = &PyCPointerType_Type; PyCPointer_Type.tp_base = &PyCData_Type; if (PyType_Ready(&PyCPointer_Type) < 0) return NULL; + Py_INCREF(&PyCPointer_Type); PyModule_AddObject(m, "_Pointer", (PyObject *)&PyCPointer_Type); Py_TYPE(&PyCArray_Type) = &PyCArrayType_Type; PyCArray_Type.tp_base = &PyCData_Type; if (PyType_Ready(&PyCArray_Type) < 0) return NULL; + Py_INCREF(&PyCArray_Type); PyModule_AddObject(m, "Array", (PyObject *)&PyCArray_Type); Py_TYPE(&Simple_Type) = &PyCSimpleType_Type; Simple_Type.tp_base = &PyCData_Type; if (PyType_Ready(&Simple_Type) < 0) return NULL; + Py_INCREF(&Simple_Type); PyModule_AddObject(m, "_SimpleCData", (PyObject *)&Simple_Type); Py_TYPE(&PyCFuncPtr_Type) = &PyCFuncPtrType_Type; PyCFuncPtr_Type.tp_base = &PyCData_Type; if (PyType_Ready(&PyCFuncPtr_Type) < 0) return NULL; + Py_INCREF(&PyCFuncPtr_Type); PyModule_AddObject(m, "CFuncPtr", (PyObject *)&PyCFuncPtr_Type); /************************************************* |