summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Heller <theller@ctypes.org>2007-10-24 19:37:27 (GMT)
committerThomas Heller <theller@ctypes.org>2007-10-24 19:37:27 (GMT)
commit39013cd4c0f76b7b6c34efe4e341618f0ad2027a (patch)
tree2112caf57961f78c961cdb552377778dcbbc7584
parentbd1c68c94f0d5bc25b48f62c7527f51c754f2b6b (diff)
downloadcpython-39013cd4c0f76b7b6c34efe4e341618f0ad2027a.zip
cpython-39013cd4c0f76b7b6c34efe4e341618f0ad2027a.tar.gz
cpython-39013cd4c0f76b7b6c34efe4e341618f0ad2027a.tar.bz2
A 'PyObject *' parameter in PyErr_Format must use %S parameter, not %s.
Added unittest for calling a function with paramflags.
-rw-r--r--Lib/ctypes/test/test_prototypes.py18
-rw-r--r--Modules/_ctypes/_ctypes.c2
2 files changed, 19 insertions, 1 deletions
diff --git a/Lib/ctypes/test/test_prototypes.py b/Lib/ctypes/test/test_prototypes.py
index 91b7e0d..e098e7b 100644
--- a/Lib/ctypes/test/test_prototypes.py
+++ b/Lib/ctypes/test/test_prototypes.py
@@ -48,6 +48,24 @@ class CharPointersTestCase(unittest.TestCase):
func.restype = c_long
func.argtypes = None
+ def test_paramflags(self):
+ # function returns c_void_p result,
+ # and has a required parameter named 'input'
+ prototype = CFUNCTYPE(c_void_p, c_void_p)
+ func = prototype(("_testfunc_p_p", testdll),
+ ((1, "input"),))
+
+ try:
+ func()
+ except TypeError as details:
+ self.failUnlessEqual(str(details), "required argument 'input' missing")
+ else:
+ self.fail("TypeError not raised")
+
+ self.failUnlessEqual(func(None), None)
+ self.failUnlessEqual(func(input=None), None)
+
+
def test_int_pointer_arg(self):
func = testdll._testfunc_p_p
func.restype = c_long
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
index f922630..81276fa 100644
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -2992,7 +2992,7 @@ _get_arg(int *pindex, PyObject *name, PyObject *defval, PyObject *inargs, PyObje
/* we can't currently emit a better error message */
if (name)
PyErr_Format(PyExc_TypeError,
- "required argument '%s' missing", name);
+ "required argument '%S' missing", name);
else
PyErr_Format(PyExc_TypeError,
"not enough arguments");