[pypy-commit] pypy py3k-memoryview: Fix translation.
Manuel Jacob
noreply at buildbot.pypy.org
Fri May 23 09:57:09 CEST 2014
Author: Manuel Jacob
Branch: py3k-memoryview
Changeset: r71682:94e75ac81672
Date: 2014-05-23 09:56 +0200
http://bitbucket.org/pypy/pypy/changeset/94e75ac81672/
Log: Fix translation.
diff --git a/pypy/module/_cffi_backend/cbuffer.py b/pypy/module/_cffi_backend/cbuffer.py
--- a/pypy/module/_cffi_backend/cbuffer.py
+++ b/pypy/module/_cffi_backend/cbuffer.py
@@ -3,7 +3,6 @@
from pypy.interpreter.gateway import unwrap_spec, interp2app
from pypy.interpreter.typedef import TypeDef, make_weakref_descr
from pypy.module._cffi_backend import cdataobj, ctypeptr, ctypearray
-from pypy.objspace.std.memoryobject import _buffer_setitem
from rpython.rlib.buffer import Buffer
from rpython.rtyper.annlowlevel import llstr
@@ -43,8 +42,6 @@
copy_string_to_raw(llstr(string), raw_cdata, 0, len(string))
-# Override the typedef to narrow down the interface that's exposed to app-level
-
class MiniBuffer(W_Root):
def __init__(self, buffer, keepalive=None):
self.buffer = buffer
@@ -65,7 +62,18 @@
return space.wrapbytes(res)
def descr_setitem(self, space, w_index, w_newstring):
- _buffer_setitem(space, self.buffer, w_index, w_newstring)
+ start, stop, step, size = space.decode_index4(w_index,
+ self.buffer.getlength())
+ if step not in (0, 1):
+ raise oefmt(space.w_NotImplementedError, "")
+ value = space.buffer_w(w_newstring, space.BUF_CONTIG_RO)
+ if value.getlength() != size:
+ raise oefmt(space.w_ValueError,
+ "cannot modify size of memoryview object")
+ if step == 0: # index only
+ self.buffer.setitem(start, value.getitem(0))
+ elif step == 1:
+ self.buffer.setslice(start, value.as_str())
MiniBuffer.typedef = TypeDef(
More information about the pypy-commit
mailing list