Author: Armin Rigo <[email protected]>
Branch:
Changeset: r64825:0b26d350de79
Date: 2013-06-08 11:24 +0200
http://bitbucket.org/pypy/pypy/changeset/0b26d350de79/
Log: Move this logic after the checks, otherwise errors might be hidden
(on Windows). (This follows cffi/0b90939873ae)
diff --git a/pypy/module/_cffi_backend/ctypefunc.py
b/pypy/module/_cffi_backend/ctypefunc.py
--- a/pypy/module/_cffi_backend/ctypefunc.py
+++ b/pypy/module/_cffi_backend/ctypefunc.py
@@ -289,16 +289,6 @@
"with verify() (see pypy/module/_cffi_backend/ctypefunc.py "
"for details)"))
- if USE_C_LIBFFI_MSVC and is_result_type:
- # MSVC returns small structures in registers. Pretend int32 or
- # int64 return type. This is needed as a workaround for what
- # is really a bug of libffi_msvc seen as an independent library
- # (ctypes has a similar workaround).
- if ctype.size <= 4:
- return clibffi.ffi_type_sint32
- if ctype.size <= 8:
- return clibffi.ffi_type_sint64
-
# walk the fields, expanding arrays into repetitions; first,
# only count how many flattened fields there are
nflat = 0
@@ -318,6 +308,16 @@
"a struct with a zero-length array"))
nflat += flat
+ if USE_C_LIBFFI_MSVC and is_result_type:
+ # MSVC returns small structures in registers. Pretend int32 or
+ # int64 return type. This is needed as a workaround for what
+ # is really a bug of libffi_msvc seen as an independent library
+ # (ctypes has a similar workaround).
+ if ctype.size <= 4:
+ return clibffi.ffi_type_sint32
+ if ctype.size <= 8:
+ return clibffi.ffi_type_sint64
+
# allocate an array of (nflat + 1) ffi_types
elements = self.fb_alloc(rffi.sizeof(FFI_TYPE_P) * (nflat + 1))
elements = rffi.cast(FFI_TYPE_PP, elements)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit