Author: Matti Picus <[email protected]>
Branch: buffer-interface
Changeset: r86881:8b66ea6779d0
Date: 2016-09-05 17:17 +0300
http://bitbucket.org/pypy/pypy/changeset/8b66ea6779d0/
Log: use make_ref which has a keepalive_until_here() (arigato)
diff --git a/pypy/module/cpyext/memoryobject.py
b/pypy/module/cpyext/memoryobject.py
--- a/pypy/module/cpyext/memoryobject.py
+++ b/pypy/module/cpyext/memoryobject.py
@@ -1,6 +1,6 @@
from pypy.module.cpyext.api import (cpython_api, Py_buffer, CANNOT_FAIL,
build_type_checkers, Py_ssize_tP)
-from pypy.module.cpyext.pyobject import PyObject, as_pyobj, incref
+from pypy.module.cpyext.pyobject import PyObject, make_ref, incref
from rpython.rtyper.lltypesystem import lltype, rffi
from pypy.objspace.std.memoryobject import W_MemoryView
@@ -26,16 +26,15 @@
return view
try:
view.c_buf = rffi.cast(rffi.VOIDP, w_obj.buf.get_raw_address())
- view.c_obj = as_pyobj(space, w_obj)
+ view.c_obj = make_ref(space, w_obj)
rffi.setintfield(view, 'c_readonly', w_obj.buf.readonly)
isstr = False
except ValueError:
w_s = w_obj.descr_tobytes(space)
- view.c_obj = as_pyobj(space, w_s)
+ view.c_obj = make_ref(space, w_s)
rffi.setintfield(view, 'c_readonly', 1)
isstr = True
view.c_len = w_obj.getlength()
- incref(space, view.c_obj)
view.c_itemsize = w_obj.buf.getitemsize()
ndim = w_obj.buf.getndim()
rffi.setintfield(view, 'c_ndim', ndim)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit