c_void_p.from_param accepts bytes. Fix test_prototypes.

This commit is contained in:
Thomas Heller 2007-07-12 19:38:33 +00:00
parent 3d79dd9edf
commit 3821e31d19
2 changed files with 19 additions and 1 deletions

View File

@ -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)))

View File

@ -1268,11 +1268,29 @@ c_void_p_from_param(PyObject *type, PyObject *value)
}
return (PyObject *)parg;
}
/* XXX struni: remove later */
/* string */
if (PyString_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;
}
/* bytes */
if (PyBytes_Check(value)) {
PyCArgObject *parg;
struct fielddesc *fd = getentry("z");
parg = new_CArgObject();
if (parg == NULL)
return NULL;