summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Heller <theller@ctypes.org>2007-07-13 12:07:59 (GMT)
committerThomas Heller <theller@ctypes.org>2007-07-13 12:07:59 (GMT)
commit27384da6e863b35fcee3e773c71c497406056458 (patch)
treef791de1153ed54907c3e4b4a87cd53ddb835c792
parentace05054d3e146a6fa4435275b83bd8e99327fb1 (diff)
downloadcpython-27384da6e863b35fcee3e773c71c497406056458.zip
cpython-27384da6e863b35fcee3e773c71c497406056458.tar.gz
cpython-27384da6e863b35fcee3e773c71c497406056458.tar.bz2
Do not accept str8 type in function calls any longer.
Accept bytes instead of str8 in the (unexposed in ctypes) BSTR type.
-rw-r--r--Lib/ctypes/test/test_bytes.py10
-rw-r--r--Modules/_ctypes/callproc.c9
-rw-r--r--Modules/_ctypes/cfield.c2
3 files changed, 11 insertions, 10 deletions
diff --git a/Lib/ctypes/test/test_bytes.py b/Lib/ctypes/test/test_bytes.py
index e6e047a..db2824d 100644
--- a/Lib/ctypes/test/test_bytes.py
+++ b/Lib/ctypes/test/test_bytes.py
@@ -1,5 +1,6 @@
"""Test where byte objects are accepted"""
import unittest
+import sys
from ctypes import *
class BytesTest(unittest.TestCase):
@@ -37,5 +38,14 @@ class BytesTest(unittest.TestCase):
X("abc")
X(b"abc")
+ if sys.platform == "win32":
+ def test_BSTR(self):
+ from _ctypes import _SimpleCData
+ class BSTR(_SimpleCData):
+ _type_ = "X"
+
+ BSTR("abc")
+ BSTR(b"abc")
+
if __name__ == '__main__':
unittest.main()
diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c
index 35453d5..61be77b 100644
--- a/Modules/_ctypes/callproc.c
+++ b/Modules/_ctypes/callproc.c
@@ -507,15 +507,6 @@ static int ConvParam(PyObject *obj, Py_ssize_t index, struct argument *pa)
return 0;
}
- /* XXX struni remove later */
- if (PyString_Check(obj)) {
- pa->ffi_type = &ffi_type_pointer;
- pa->value.p = PyString_AS_STRING(obj);
- Py_INCREF(obj);
- pa->keep = obj;
- return 0;
- }
-
if (PyBytes_Check(obj)) {
pa->ffi_type = &ffi_type_pointer;
pa->value.p = PyBytes_AsString(obj);
diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c
index da7e0fc..1b18879 100644
--- a/Modules/_ctypes/cfield.c
+++ b/Modules/_ctypes/cfield.c
@@ -1501,7 +1501,7 @@ BSTR_set(void *ptr, PyObject *value, Py_ssize_t size)
/* convert value into a PyUnicodeObject or NULL */
if (Py_None == value) {
value = NULL;
- } else if (PyString_Check(value)) {
+ } else if (PyBytes_Check(value)) {
value = PyUnicode_FromEncodedObject(value,
conversion_mode_encoding,
conversion_mode_errors);