[pypy-commit] cffi char16_char32_t: tweaks
arigo
pypy.commits at gmail.com
Wed May 31 11:17:07 EDT 2017
Author: Armin Rigo <arigo at tunes.org>
Branch: char16_char32_t
Changeset: r2957:8e7afeadc985
Date: 2017-05-31 17:16 +0200
http://bitbucket.org/cffi/cffi/changeset/8e7afeadc985/
Log: tweaks
diff --git a/cffi/_cffi_include.h b/cffi/_cffi_include.h
--- a/cffi/_cffi_include.h
+++ b/cffi/_cffi_include.h
@@ -164,9 +164,9 @@
#define _cffi_from_c_struct \
((PyObject *(*)(char *, struct _cffi_ctypedescr *))_cffi_exports[18])
#define _cffi_to_c_wchar_t \
- ((wchar_t(*)(PyObject *))_cffi_exports[19])
+ ((_cffi_wchar_t(*)(PyObject *))_cffi_exports[19])
#define _cffi_from_c_wchar_t \
- ((PyObject *(*)(wchar_t))_cffi_exports[20])
+ ((PyObject *(*)(_cffi_wchar_t))_cffi_exports[20])
#define _cffi_to_c_long_double \
((long double(*)(PyObject *))_cffi_exports[21])
#define _cffi_to_c__Bool \
@@ -231,15 +231,15 @@
typedef uint16_t _cffi_wchar_t; /* same random pick as _cffi_backend.c */
#endif
-_CFFI_UNUSED_FN static int _cffi_to_c_char16_t(PyObject *o)
+_CFFI_UNUSED_FN static uint16_t _cffi_to_c_char16_t(PyObject *o)
{
if (sizeof(_cffi_wchar_t) == 2)
- return _cffi_to_c_wchar_t(o);
+ return (uint16_t)_cffi_to_c_wchar_t(o);
else
- return _cffi_to_c_wchar3216_t(o);
+ return (uint16_t)_cffi_to_c_wchar3216_t(o);
}
-_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char16_t(int x)
+_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char16_t(uint16_t x)
{
if (sizeof(_cffi_wchar_t) == 2)
return _cffi_from_c_wchar_t(x);
@@ -250,9 +250,9 @@
_CFFI_UNUSED_FN static int _cffi_to_c_char32_t(PyObject *o)
{
if (sizeof(_cffi_wchar_t) == 4)
- return _cffi_to_c_wchar_t(o);
+ return (int)_cffi_to_c_wchar_t(o);
else
- return _cffi_to_c_wchar3216_t(o);
+ return (int)_cffi_to_c_wchar3216_t(o);
}
_CFFI_UNUSED_FN static PyObject *_cffi_from_c_char32_t(int x)
diff --git a/testing/cffi1/test_recompiler.py b/testing/cffi1/test_recompiler.py
--- a/testing/cffi1/test_recompiler.py
+++ b/testing/cffi1/test_recompiler.py
@@ -2272,6 +2272,8 @@
assert lib.foo_4bytes(u+'\u1234') == u+'\u125e'
assert lib.foo_4bytes(u+'\U00012345') == u+'\U0001236f'
py.test.raises(TypeError, lib.foo_2bytes, u+'\U00012345')
+ py.test.raises(TypeError, lib.foo_2bytes, 1234)
+ py.test.raises(TypeError, lib.foo_4bytes, 1234)
def test_char16_char32_plain_c():
test_char16_char32_type(no_cpp=True)
More information about the pypy-commit
mailing list