[pypy-commit] pypy py3k-memoryview: Fix.
Manuel Jacob
noreply at buildbot.pypy.org
Mon May 19 01:12:23 CEST 2014
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)
More information about the pypy-commit
mailing list