Author: Ronan Lamy <[email protected]>
Branch: PyBuffer
Changeset: r91050:6e4f2ef8a6bf
Date: 2017-04-13 01:31 +0100
http://bitbucket.org/pypy/pypy/changeset/6e4f2ef8a6bf/

Log:    Fix BufferSlice.parent_index()

diff --git a/pypy/objspace/std/memoryobject.py 
b/pypy/objspace/std/memoryobject.py
--- a/pypy/objspace/std/memoryobject.py
+++ b/pypy/objspace/std/memoryobject.py
@@ -598,7 +598,7 @@
         self.readonly = self.buf.readonly
         self.strides = buf.getstrides()[:]
         itemsize = buf.getitemsize()
-        self.offset = start * itemsize
+        self.start = start
         self.step = step
         self.strides[0] *= step
         self.shape = buf.getshape()[:]
@@ -611,19 +611,20 @@
         if start == stop:
             return ''     # otherwise, adding self.offset might make them
                           # out of bounds
-        return self.buf.getbytes(self.offset + start, self.offset + stop,
-                                    step, size)
+        offset = self.start * self.getitemsize()
+        return self.buf.getbytes(offset + start, offset + stop, step, size)
 
     def setbytes(self, start, string):
         if len(string) == 0:
             return        # otherwise, adding self.offset might make 'start'
                           # out of bounds
-        self.buf.setbytes(self.offset + start, string)
+        offset = self.start * self.getitemsize()
+        self.buf.setbytes(offset + start, string)
 
     def get_raw_address(self):
         from rpython.rtyper.lltypesystem import rffi
         ptr = self.buf.get_raw_address()
-        return rffi.ptradd(ptr, self.offset)
+        return rffi.ptradd(ptr, self.start * self.getitemsize())
 
     def getformat(self):
         return self.buf.getformat()
@@ -641,7 +642,7 @@
         return self.strides
 
     def parent_index(self, idx):
-        return self.offset + self.step * idx
+        return self.start + self.step * idx
 
     def w_getitem(self, space, idx):
         return self.buf.w_getitem(space, self.parent_index(idx))
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to