Eryk Sun added the comment: This issue is more straight-forward than #22273. ISTM, we just have to copy large values. For example, in ffi_call, we'd iterate over the arguments and alloca and memcpy the large values prior to calling ffi_call_AMD64:
case FFI_SYSV: /* If a single argument takes more than 8 bytes, then a copy is passed by reference. */ for (unsigned i = 0; i < cif->nargs; i++) { size_t z = cif->arg_types[i]->size; if (z > 8) { void *temp = alloca(z); memcpy(temp, avalue[i], z); avalue[i] = temp; } } /*@-usedef@*/ return ffi_call_AMD64(ffi_prep_args, &ecif, cif->bytes, cif->flags, ecif.rvalue, fn); /*@=usedef@*/ break; ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue29565> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com