]> granicus.if.org Git - python/commitdiff
Fix issue6869: refcount problem in the _ctypes extension.
authorThomas Heller <theller@ctypes.org>
Sun, 8 Aug 2010 18:16:20 +0000 (18:16 +0000)
committerThomas Heller <theller@ctypes.org>
Sun, 8 Aug 2010 18:16:20 +0000 (18:16 +0000)
Misc/NEWS
Modules/_ctypes/_ctypes.c

index c6795a249aad71e9b0b7950b32acf71c30928291..644bd9eae5503d6217a5302e89c530ac1e037bb7 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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
index 1f4c6a9220c0236ed42d862af6e00a5e58ba5d16..a6df55cad72b696885c532c4028f1d277171af2e 100644 (file)
@@ -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);
 
     /*************************************************