diff options
| author | Thomas Heller <theller@ctypes.org> | 2007-07-12 19:38:33 +0000 |
|---|---|---|
| committer | Thomas Heller <theller@ctypes.org> | 2007-07-12 19:38:33 +0000 |
| commit | 3821e31d19343ff8694f6e2c86c12c0dcd127527 (patch) | |
| tree | a06791f060a16c02b29298bdef398af5a503185e | |
| parent | 3d79dd9edf3cfdffd1dc7d4e45b77da2478e1111 (diff) | |
| download | cpython-git-3821e31d19343ff8694f6e2c86c12c0dcd127527.tar.gz | |
c_void_p.from_param accepts bytes. Fix test_prototypes.
| -rw-r--r-- | Lib/ctypes/test/test_prototypes.py | 2 | ||||
| -rw-r--r-- | Modules/_ctypes/_ctypes.c | 18 |
2 files changed, 19 insertions, 1 deletions
diff --git a/Lib/ctypes/test/test_prototypes.py b/Lib/ctypes/test/test_prototypes.py index b14d2d8690..91b7e0da7d 100644 --- a/Lib/ctypes/test/test_prototypes.py +++ b/Lib/ctypes/test/test_prototypes.py @@ -104,7 +104,7 @@ class CharPointersTestCase(unittest.TestCase): func.argtypes = c_void_p, self.failUnlessEqual(None, func(None)) - self.failUnlessEqual("123", func("123")) + self.failUnlessEqual("123", func(b"123")) self.failUnlessEqual("123", func(c_char_p("123"))) self.failUnlessEqual(None, func(c_char_p(None))) diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index d6a435d614..5b114804e5 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -1268,6 +1268,7 @@ c_void_p_from_param(PyObject *type, PyObject *value) } return (PyObject *)parg; } + /* XXX struni: remove later */ /* string */ if (PyString_Check(value)) { PyCArgObject *parg; @@ -1285,6 +1286,23 @@ c_void_p_from_param(PyObject *type, PyObject *value) } return (PyObject *)parg; } +/* bytes */ + if (PyBytes_Check(value)) { + PyCArgObject *parg; + struct fielddesc *fd = getentry("z"); + + parg = new_CArgObject(); + if (parg == NULL) + return NULL; + parg->pffi_type = &ffi_type_pointer; + parg->tag = 'z'; + parg->obj = fd->setfunc(&parg->value, value, 0); + if (parg->obj == NULL) { + Py_DECREF(parg); + return NULL; + } + return (PyObject *)parg; + } /* unicode */ if (PyUnicode_Check(value)) { PyCArgObject *parg; |
