Author: Manuel Jacob Branch: refactor-buffer-api Changeset: r66456:cab5a51bf6e4 Date: 2013-08-30 11:45 +0100 http://bitbucket.org/pypy/pypy/changeset/cab5a51bf6e4/
Log: Fix buffer_attach(). diff --git a/pypy/module/cpyext/bufferobject.py b/pypy/module/cpyext/bufferobject.py --- a/pypy/module/cpyext/bufferobject.py +++ b/pypy/module/cpyext/bufferobject.py @@ -39,24 +39,25 @@ py_buf.c_b_offset = 0 rffi.setintfield(py_buf, 'c_b_readonly', 1) rffi.setintfield(py_buf, 'c_b_hash', -1) + buf = w_obj.buf - if isinstance(w_obj, SubBuffer): - py_buf.c_b_offset = w_obj.offset - w_obj = w_obj.buffer + if isinstance(buf, SubBuffer): + py_buf.c_b_offset = buf.offset + buf = buf.buffer - # If w_obj already allocated a fixed buffer, use it, and keep a - # reference to w_obj. + # If buf already allocated a fixed buffer, use it, and keep a + # reference to buf. # Otherwise, b_base stays NULL, and we own the b_ptr. - if isinstance(w_obj, StringBuffer): + if isinstance(buf, StringBuffer): py_buf.c_b_base = lltype.nullptr(PyObject.TO) - py_buf.c_b_ptr = rffi.cast(rffi.VOIDP, rffi.str2charp(w_obj.value)) - py_buf.c_b_size = w_obj.getlength() - elif isinstance(w_obj, ArrayBuffer): - w_base = w_obj.array + py_buf.c_b_ptr = rffi.cast(rffi.VOIDP, rffi.str2charp(buf.value)) + py_buf.c_b_size = buf.getlength() + elif isinstance(buf, ArrayBuffer): + w_base = buf.array py_buf.c_b_base = make_ref(space, w_base) - py_buf.c_b_ptr = rffi.cast(rffi.VOIDP, w_obj.array._charbuf_start()) - py_buf.c_b_size = w_obj.getlength() + py_buf.c_b_ptr = rffi.cast(rffi.VOIDP, buf.array._charbuf_start()) + py_buf.c_b_size = buf.getlength() else: raise OperationError(space.w_NotImplementedError, space.wrap( "buffer flavor not supported")) _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit