mirror of
https://github.com/python/cpython
synced 2026-09-29 10:15:30 +03:00
Do not accept str8 type in function calls any longer.
Accept bytes instead of str8 in the (unexposed in ctypes) BSTR type.
This commit is contained in:
parent
ace05054d3
commit
27384da6e8
3 changed files with 11 additions and 10 deletions
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue