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

Merged revisions 74921 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r74921 | thomas.heller | 2009-09-18 22:05:44 +0200 (Fr, 18 Sep 2009) | 3 lines

  Issue #4606: Passing 'None' if ctypes argtype is set to POINTER(...)
  does now always result in NULL.
........
üst 820aefe2
...@@ -97,7 +97,7 @@ class SimpleTypesTestCase(unittest.TestCase): ...@@ -97,7 +97,7 @@ class SimpleTypesTestCase(unittest.TestCase):
self.failUnlessEqual(x.contents.value, 42) self.failUnlessEqual(x.contents.value, 42)
self.failUnlessEqual(LPINT(c_int(42)).contents.value, 42) self.failUnlessEqual(LPINT(c_int(42)).contents.value, 42)
self.failUnlessEqual(LPINT.from_param(None), 0) self.assertEqual(LPINT.from_param(None), None)
if c_int != c_long: if c_int != c_long:
self.assertRaises(TypeError, LPINT.from_param, pointer(c_long(42))) self.assertRaises(TypeError, LPINT.from_param, pointer(c_long(42)))
......
...@@ -82,8 +82,11 @@ Core and Builtins ...@@ -82,8 +82,11 @@ Core and Builtins
Library Library
------- -------
- Issue #5042: Structure sub-subclass does now initialize correctly - Issue #4606: Passing 'None' if ctypes argtype is set to POINTER(...)
with base class positional arguments. does now always result in NULL.
- Issue #5042: ctypes Structure sub-subclass does now initialize
correctly with base class positional arguments.
- Issue #6938: Fix a TypeError in string formatting of a multiprocessing - Issue #6938: Fix a TypeError in string formatting of a multiprocessing
debug message. debug message.
......
...@@ -972,8 +972,11 @@ PointerType_from_param(PyObject *type, PyObject *value) ...@@ -972,8 +972,11 @@ PointerType_from_param(PyObject *type, PyObject *value)
{ {
StgDictObject *typedict; StgDictObject *typedict;
if (value == Py_None) if (value == Py_None) {
return PyInt_FromLong(0); /* NULL pointer */ /* ConvParam will convert to a NULL pointer later */
Py_INCREF(value);
return value;
}
typedict = PyType_stgdict(type); typedict = PyType_stgdict(type);
assert(typedict); /* Cannot be NULL for pointer types */ assert(typedict); /* Cannot be NULL for pointer types */
......
...@@ -546,6 +546,7 @@ PyTypeObject PyCArg_Type = { ...@@ -546,6 +546,7 @@ PyTypeObject PyCArg_Type = {
* C function call. * C function call.
* *
* 1. Python integers are converted to C int and passed by value. * 1. Python integers are converted to C int and passed by value.
* Py_None is converted to a C NULL pointer.
* *
* 2. 3-tuples are expected to have a format character in the first * 2. 3-tuples are expected to have a format character in the first
* item, which must be 'i', 'f', 'd', 'q', or 'P'. * item, which must be 'i', 'f', 'd', 'q', or 'P'.
......
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