Kaydet (Commit) 5c7589c5 authored tarafından Thomas Heller's avatar Thomas Heller

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.
........
üst b8774ec5
...@@ -26,6 +26,8 @@ Core and Builtins ...@@ -26,6 +26,8 @@ Core and Builtins
Library Library
------- -------
- Issue #6869: Fix a refcount problem in the _ctypes extension.
- Issue5504 - ctypes should now work with systems where mmap can't be - Issue5504 - ctypes should now work with systems where mmap can't be
PROT_WRITE and PROT_EXEC. PROT_WRITE and PROT_EXEC.
......
...@@ -5541,36 +5541,42 @@ init_ctypes(void) ...@@ -5541,36 +5541,42 @@ init_ctypes(void)
Struct_Type.tp_base = &PyCData_Type; Struct_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&Struct_Type) < 0) if (PyType_Ready(&Struct_Type) < 0)
return; return;
Py_INCREF(&Struct_Type);
PyModule_AddObject(m, "Structure", (PyObject *)&Struct_Type); PyModule_AddObject(m, "Structure", (PyObject *)&Struct_Type);
Py_TYPE(&Union_Type) = &UnionType_Type; Py_TYPE(&Union_Type) = &UnionType_Type;
Union_Type.tp_base = &PyCData_Type; Union_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&Union_Type) < 0) if (PyType_Ready(&Union_Type) < 0)
return; return;
Py_INCREF(&Union_Type);
PyModule_AddObject(m, "Union", (PyObject *)&Union_Type); PyModule_AddObject(m, "Union", (PyObject *)&Union_Type);
Py_TYPE(&PyCPointer_Type) = &PyCPointerType_Type; Py_TYPE(&PyCPointer_Type) = &PyCPointerType_Type;
PyCPointer_Type.tp_base = &PyCData_Type; PyCPointer_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&PyCPointer_Type) < 0) if (PyType_Ready(&PyCPointer_Type) < 0)
return; return;
Py_INCREF(&PyCPointer_Type);
PyModule_AddObject(m, "_Pointer", (PyObject *)&PyCPointer_Type); PyModule_AddObject(m, "_Pointer", (PyObject *)&PyCPointer_Type);
Py_TYPE(&PyCArray_Type) = &PyCArrayType_Type; Py_TYPE(&PyCArray_Type) = &PyCArrayType_Type;
PyCArray_Type.tp_base = &PyCData_Type; PyCArray_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&PyCArray_Type) < 0) if (PyType_Ready(&PyCArray_Type) < 0)
return; return;
Py_INCREF(&PyCArray_Type);
PyModule_AddObject(m, "Array", (PyObject *)&PyCArray_Type); PyModule_AddObject(m, "Array", (PyObject *)&PyCArray_Type);
Py_TYPE(&Simple_Type) = &PyCSimpleType_Type; Py_TYPE(&Simple_Type) = &PyCSimpleType_Type;
Simple_Type.tp_base = &PyCData_Type; Simple_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&Simple_Type) < 0) if (PyType_Ready(&Simple_Type) < 0)
return; return;
Py_INCREF(&Simple_Type);
PyModule_AddObject(m, "_SimpleCData", (PyObject *)&Simple_Type); PyModule_AddObject(m, "_SimpleCData", (PyObject *)&Simple_Type);
Py_TYPE(&PyCFuncPtr_Type) = &PyCFuncPtrType_Type; Py_TYPE(&PyCFuncPtr_Type) = &PyCFuncPtrType_Type;
PyCFuncPtr_Type.tp_base = &PyCData_Type; PyCFuncPtr_Type.tp_base = &PyCData_Type;
if (PyType_Ready(&PyCFuncPtr_Type) < 0) if (PyType_Ready(&PyCFuncPtr_Type) < 0)
return; return;
Py_INCREF(&PyCFuncPtr_Type);
PyModule_AddObject(m, "CFuncPtr", (PyObject *)&PyCFuncPtr_Type); PyModule_AddObject(m, "CFuncPtr", (PyObject *)&PyCFuncPtr_Type);
/************************************************* /*************************************************
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment