[pypy-commit] pypy release-5.x: test, fix issue #2395 - do not force pyobj
mattip
pypy.commits at gmail.com
Tue Sep 6 06:59:08 EDT 2016
Author: Matti Picus <matti.picus at gmail.com>
Branch: release-5.x
Changeset: r86902:0e2d9a73f5a1
Date: 2016-09-06 13:46 +0300
http://bitbucket.org/pypy/pypy/changeset/0e2d9a73f5a1/
Log: test, fix issue #2395 - do not force pyobj
diff --git a/pypy/module/cpyext/bytesobject.py b/pypy/module/cpyext/bytesobject.py
--- a/pypy/module/cpyext/bytesobject.py
+++ b/pypy/module/cpyext/bytesobject.py
@@ -156,9 +156,6 @@
"expected string or Unicode object, %T found",
from_ref(space, ref))
ref_str = rffi.cast(PyBytesObject, ref)
- if not pyobj_has_w_obj(ref):
- # XXX Force the ref?
- bytes_realize(space, ref)
return ref_str.c_ob_sval
@cpython_api([rffi.VOIDP], rffi.CCHARP, error=0)
diff --git a/pypy/module/cpyext/test/test_bytesobject.py b/pypy/module/cpyext/test/test_bytesobject.py
--- a/pypy/module/cpyext/test/test_bytesobject.py
+++ b/pypy/module/cpyext/test/test_bytesobject.py
@@ -183,8 +183,27 @@
Py_INCREF(Py_None);
return Py_None;
"""),
+ ("c_only", "METH_NOARGS",
+ """
+ int ret;
+ char * buf2;
+ PyObject * obj = PyBytes_FromStringAndSize(NULL, 1024);
+ if (!obj)
+ return NULL;
+ buf2 = PyBytes_AsString(obj);
+ if (!buf2)
+ return NULL;
+ /* buf should not have been forced, issue #2395 */
+ ret = _PyBytes_Resize(&obj, 512);
+ if (ret < 0)
+ return NULL;
+ Py_DECREF(obj);
+ Py_INCREF(Py_None);
+ return Py_None;
+ """),
])
module.getbytes()
+ module.c_only()
def test_py_string_as_string_Unicode(self):
module = self.import_extension('foo', [
More information about the pypy-commit
mailing list