[pypy-commit] pypy ffi-backend: Translation fix
arigo
noreply at buildbot.pypy.org
Sat Jul 28 17:37:47 CEST 2012
Author: Armin Rigo <arigo at tunes.org>
Branch: ffi-backend
Changeset: r56495:98dabb936cb2
Date: 2012-07-28 16:22 +0200
http://bitbucket.org/pypy/pypy/changeset/98dabb936cb2/
Log: Translation fix
diff --git a/pypy/module/_cffi_backend/cdataobj.py b/pypy/module/_cffi_backend/cdataobj.py
--- a/pypy/module/_cffi_backend/cdataobj.py
+++ b/pypy/module/_cffi_backend/cdataobj.py
@@ -117,21 +117,21 @@
def getitem(self, w_index):
space = self.space
i = space.getindex_w(w_index, space.w_IndexError)
- self.ctype._check_subscript_index(self, i)
- w_o = self._do_getitem(i)
+ ctype = self.ctype._check_subscript_index(self, i)
+ w_o = self._do_getitem(ctype, i)
keepalive_until_here(self)
return w_o
- def _do_getitem(self, i):
- ctitem = self.ctype.ctitem
+ def _do_getitem(self, ctype, i):
+ ctitem = ctype.ctitem
return ctitem.convert_to_object(
rffi.ptradd(self._cdata, i * ctitem.size))
def setitem(self, w_index, w_value):
space = self.space
i = space.getindex_w(w_index, space.w_IndexError)
- self.ctype._check_subscript_index(self, i)
- ctitem = self.ctype.ctitem
+ ctype = self.ctype._check_subscript_index(self, i)
+ ctitem = ctype.ctitem
ctitem.convert_from_object(
rffi.ptradd(self._cdata, i * ctitem.size),
w_value)
@@ -288,7 +288,8 @@
W_CDataApplevelOwning.__init__(self, space, cdata, ctype)
self.structobj = structobj
- def _do_getitem(self, i):
+ def _do_getitem(self, ctype, i):
+ assert i == 0
return self.structobj
diff --git a/pypy/module/_cffi_backend/ctypearray.py b/pypy/module/_cffi_backend/ctypearray.py
--- a/pypy/module/_cffi_backend/ctypearray.py
+++ b/pypy/module/_cffi_backend/ctypearray.py
@@ -88,6 +88,7 @@
raise operationerrfmt(space.w_IndexError,
"index too large for cdata '%s' (expected %d < %d)",
self.name, i, w_cdata.get_array_length())
+ return self
def convert_from_object(self, cdata, w_ob):
space = self.space
diff --git a/pypy/module/_cffi_backend/ctypeptr.py b/pypy/module/_cffi_backend/ctypeptr.py
--- a/pypy/module/_cffi_backend/ctypeptr.py
+++ b/pypy/module/_cffi_backend/ctypeptr.py
@@ -156,6 +156,7 @@
raise operationerrfmt(space.w_IndexError,
"cdata '%s' can only be indexed by 0",
self.name)
+ return self
def add(self, cdata, i):
space = self.space
More information about the pypy-commit
mailing list