[Python-checkins] r83843 - in python/branches/release27-maint: Misc/NEWS Modules/_ctypes/_ctypes.c

thomas.heller python-checkins at python.org
Sun Aug 8 20:28:59 CEST 2010


Author: thomas.heller
Date: Sun Aug  8 20:28:59 2010
New Revision: 83843

Log:
Merged revisions 83841 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r83841 | thomas.heller | 2010-08-08 20:16:20 +0200 (So, 08 Aug 2010) | 2 lines
  
  Fix issue6869: refcount problem in the _ctypes extension.
........


Modified:
   python/branches/release27-maint/   (props changed)
   python/branches/release27-maint/Misc/NEWS
   python/branches/release27-maint/Modules/_ctypes/_ctypes.c

Modified: python/branches/release27-maint/Misc/NEWS
==============================================================================
--- python/branches/release27-maint/Misc/NEWS	(original)
+++ python/branches/release27-maint/Misc/NEWS	Sun Aug  8 20:28:59 2010
@@ -26,6 +26,8 @@
 Library
 -------
 
+- Issue #6869: Fix a refcount problem in the _ctypes extension.
+
 - Issue5504 - ctypes should now work with systems where mmap can't be
   PROT_WRITE and PROT_EXEC.
 

Modified: python/branches/release27-maint/Modules/_ctypes/_ctypes.c
==============================================================================
--- python/branches/release27-maint/Modules/_ctypes/_ctypes.c	(original)
+++ python/branches/release27-maint/Modules/_ctypes/_ctypes.c	Sun Aug  8 20:28:59 2010
@@ -5541,36 +5541,42 @@
     Struct_Type.tp_base = &PyCData_Type;
     if (PyType_Ready(&Struct_Type) < 0)
         return;
+    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;
+    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;
+    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;
+    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;
+    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;
+    Py_INCREF(&PyCFuncPtr_Type);
     PyModule_AddObject(m, "CFuncPtr", (PyObject *)&PyCFuncPtr_Type);
 
     /*************************************************


More information about the Python-checkins mailing list