Author: Ronan Lamy <ronan.l...@gmail.com> Branch: py3.5 Changeset: r90325:8a9b287b5544 Date: 2017-02-23 15:24 +0000 http://bitbucket.org/pypy/pypy/changeset/8a9b287b5544/
Log: hg merge default diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst --- a/pypy/doc/whatsnew-head.rst +++ b/pypy/doc/whatsnew-head.rst @@ -160,6 +160,8 @@ not on PyPy 3.x. The latter is used to get an app-level unicode string by decoding the RPython string, assumed to be utf-8. +.. branch: space-wrap + .. branch: fix_bool_restype Fix for ``ctypes.c_bool``-returning ctypes functions diff --git a/pypy/module/cpyext/slotdefs.py b/pypy/module/cpyext/slotdefs.py --- a/pypy/module/cpyext/slotdefs.py +++ b/pypy/module/cpyext/slotdefs.py @@ -228,7 +228,10 @@ def wrap_lenfunc(space, w_self, w_args, func): func_len = rffi.cast(lenfunc, func) check_num_args(space, w_args, 0) - return space.newint(generic_cpy_call(space, func_len, w_self)) + res = generic_cpy_call(space, func_len, w_self) + if widen(res) == -1: + space.fromcache(State).check_and_raise_exception(always=True) + return space.newint(res) def wrap_sq_item(space, w_self, w_args, func): func_target = rffi.cast(ssizeargfunc, func) diff --git a/pypy/module/cpyext/test/test_pystate.py b/pypy/module/cpyext/test/test_pystate.py --- a/pypy/module/cpyext/test/test_pystate.py +++ b/pypy/module/cpyext/test/test_pystate.py @@ -176,7 +176,6 @@ ("bounce", "METH_NOARGS", """ PyGILState_STATE gilstate; - PyThreadState *tstate; PyObject *dict; if (PyEval_ThreadsInitialized() == 0) diff --git a/rpython/rlib/runicode.py b/rpython/rlib/runicode.py --- a/rpython/rlib/runicode.py +++ b/rpython/rlib/runicode.py @@ -5,7 +5,7 @@ from rpython.rlib.unicodedata import unicodedb from rpython.tool.sourcetools import func_with_new_name from rpython.rtyper.lltypesystem import lltype, rffi -from rpython.rlib import jit +from rpython.rlib import jit, nonconst if rffi.sizeof(lltype.UniChar) == 4: @@ -373,7 +373,12 @@ pos += 1 _encodeUCS4(result, ch3) continue - if not allow_surrogates: + # note: if the program only ever calls this with + # allow_surrogates=True, then we'll never annotate + # the following block of code, and errorhandler() + # will never be called. This causes RPython + # problems. Avoid it with the nonconst hack. + if not allow_surrogates or nonconst.NonConstant(False): ru, rs, pos = errorhandler(errors, 'utf8', 'surrogates not allowed', s, pos-1, pos) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit