@@ -350,9 +350,7 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct
350
350
int pack ;
351
351
Py_ssize_t ffi_ofs ;
352
352
int big_endian ;
353
- #if defined(X86_64 )
354
353
int arrays_seen = 0 ;
355
- #endif
356
354
357
355
/* HACK Alert: I cannot be bothered to fix ctypes.com, so there has to
358
356
be a way to use the old, broken semantics: _fields_ are not extended
@@ -504,10 +502,8 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct
504
502
Py_XDECREF (pair );
505
503
return -1 ;
506
504
}
507
- #if defined(X86_64 )
508
505
if (PyCArrayTypeObject_Check (desc ))
509
506
arrays_seen = 1 ;
510
- #endif
511
507
dict = PyType_stgdict (desc );
512
508
if (dict == NULL ) {
513
509
Py_DECREF (pair );
@@ -648,8 +644,6 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct
648
644
stgdict -> align = total_align ;
649
645
stgdict -> length = len ; /* ADD ffi_ofs? */
650
646
651
- #if defined(X86_64 )
652
-
653
647
#define MAX_ELEMENTS 16
654
648
655
649
if (arrays_seen && (size <= 16 )) {
@@ -669,6 +663,10 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct
669
663
* accurate set, to allow libffi to marshal them into registers
670
664
* correctly. It means one more loop over the fields, but if we got
671
665
* here, the structure is small, so there aren't too many of those.
666
+ *
667
+ * Although the passing in registers is specific to 64-bit Linux, the
668
+ * array-in-struct vs. pointer problem is general. But we restrict the
669
+ * type transformation to small structs nonetheless.
672
670
*/
673
671
ffi_type * actual_types [MAX_ELEMENTS + 1 ];
674
672
int actual_type_index = 0 ;
@@ -746,7 +744,6 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct
746
744
memcpy (& stgdict -> ffi_type_pointer .elements [ffi_ofs ], actual_types ,
747
745
actual_type_index * sizeof (ffi_type * ));
748
746
}
749
- #endif
750
747
751
748
/* We did check that this flag was NOT set above, it must not
752
749
have been set until now. */
0 commit comments