Commit 27384da6 authored by Thomas Heller's avatar Thomas Heller

Do not accept str8 type in function calls any longer.

Accept bytes instead of str8 in the (unexposed in ctypes) BSTR type.
parent ace05054
"""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()
......@@ -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);
......
......@@ -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);
......
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