[pypy-commit] pypy ffistruct: fix for the case in which we return a ulonglong on 64 bit

antocuni noreply at buildbot.pypy.org
Thu Jan 12 14:28:25 CET 2012


Author: Antonio Cuni <anto.cuni at gmail.com>
Branch: ffistruct
Changeset: r51268:36e31f50363c
Date: 2012-01-12 11:58 +0100
http://bitbucket.org/pypy/pypy/changeset/36e31f50363c/

Log:	fix for the case in which we return a ulonglong on 64 bit

diff --git a/pypy/module/_ffi/type_converter.py b/pypy/module/_ffi/type_converter.py
--- a/pypy/module/_ffi/type_converter.py
+++ b/pypy/module/_ffi/type_converter.py
@@ -194,8 +194,13 @@
         elif w_ffitype.is_signed():
             intval = self.get_signed(w_ffitype)
             return space.wrap(intval)
-        elif w_ffitype is app_types.ulong:
-            # we need to be careful when the return type is ULONG, because the
+        elif w_ffitype is app_types.ulong or w_ffitype is app_types.ulonglong:
+            # Note that we the second check (for ulonglong) is meaningful only
+            # on 64 bit, because on 32 bit the ulonglong case would have been
+            # handled by the is_longlong() branch above. On 64 bit, ulonglong
+            # is essentially the same as ulong.
+            #
+            # We need to be careful when the return type is ULONG, because the
             # value might not fit into a signed LONG, and thus might require
             # and app-evel <long>.  This is why we need to treat it separately
             # than the other unsigned types.


More information about the pypy-commit mailing list