[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