Author: Manuel Jacob Branch: py3k-memoryview Changeset: r71572:b90dbe86a285 Date: 2014-05-19 01:11 +0200 http://bitbucket.org/pypy/pypy/changeset/b90dbe86a285/
Log: Fix. diff --git a/pypy/module/array/interp_array.py b/pypy/module/array/interp_array.py --- a/pypy/module/array/interp_array.py +++ b/pypy/module/array/interp_array.py @@ -637,16 +637,14 @@ self.readonly = readonly def getlength(self): - return self.array.len + return self.array.len * self.itemsize def getitem(self, index): - resbuf = ['\x00'] * self.itemsize array = self.array data = array._charbuf_start() - for i in xrange(self.itemsize): - resbuf[i] = data[index + i] + char = data[index] array._charbuf_stop() - return ''.join(resbuf) + return char def setitem(self, index, char): array = self.array 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 @@ -73,11 +73,11 @@ def as_str(self): buf = self.buf - n_bytes = buf.getlength() * buf.itemsize + n_bytes = buf.getlength() return buf.getslice(0, n_bytes, 1, n_bytes) def getlength(self): - return self.buf.getlength() + return self.buf.getlength() // self.buf.itemsize def getslice(self, start, stop): if start < 0: @@ -109,7 +109,10 @@ if step not in (0, 1): raise OperationError(space.w_NotImplementedError, space.wrap("")) if step == 0: # index only - return space.wrapbytes(self.buf.getitem(start)) + a = start * self.buf.itemsize + b = a + self.buf.itemsize + return space.wrapbytes( + ''.join([self.buf.getitem(i) for i in range(a, b)])) res = self.getslice(start, stop) return space.wrap(res) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit