Author: Ronan Lamy <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit