[pypy-commit] pypy py3k-memoryview: SubBuffers need a specific format and itemsize.

Manuel Jacob noreply at buildbot.pypy.org
Thu Jun 27 14:21:57 CEST 2013


Author: Manuel Jacob
Branch: py3k-memoryview
Changeset: r65036:9467784455fc
Date: 2013-06-27 14:08 +0200
http://bitbucket.org/pypy/pypy/changeset/9467784455fc/

Log:	SubBuffers need a specific format and itemsize.

diff --git a/pypy/interpreter/buffer.py b/pypy/interpreter/buffer.py
--- a/pypy/interpreter/buffer.py
+++ b/pypy/interpreter/buffer.py
@@ -177,9 +177,9 @@
         raise OperationError(space.w_ValueError,
                              space.wrap("size must be zero or positive"))
     if isinstance(buffer, RWBuffer):
-        buffer = RWSubBuffer(buffer, offset, size)
+        buffer = RWSubBuffer(buffer, offset, size, 'B', 1)
     else:
-        buffer = SubBuffer(buffer, offset, size)
+        buffer = SubBuffer(buffer, offset, size, 'B', 1)
     return space.wrap(buffer)
 
 
@@ -285,12 +285,12 @@
 class SubBufferMixin(object):
     _mixin_ = True
 
-    def __init__(self, buffer, offset, size):
+    def __init__(self, buffer, offset, size, format, itemsize):
         self.buffer = buffer
         self.offset = offset
         self.size = size
-        self.format = 'B'
-        self.itemsize = 1
+        self.format = format
+        self.itemsize = itemsize
 
     def getlength(self):
         at_most = self.buffer.getlength() - self.offset
diff --git a/pypy/module/__builtin__/interp_memoryview.py b/pypy/module/__builtin__/interp_memoryview.py
--- a/pypy/module/__builtin__/interp_memoryview.py
+++ b/pypy/module/__builtin__/interp_memoryview.py
@@ -57,9 +57,9 @@
             size = 0
         buf = self.buf
         if isinstance(buf, buffer.RWBuffer):
-            buf = buffer.RWSubBuffer(buf, start, size)
+            buf = buffer.RWSubBuffer(buf, start, size, buf.format, buf.itemsize)
         else:
-            buf = buffer.SubBuffer(buf, start, size)
+            buf = buffer.SubBuffer(buf, start, size, buf.format, buf.itemsize)
         return W_MemoryView(buf)
 
     def descr_buffer(self, space):


More information about the pypy-commit mailing list