On Tue, Nov 19, 2013 at 11:16:26AM +1030, Alan Modra wrote: > On Tue, Nov 19, 2013 at 01:27:39AM +0100, Andreas Schwab wrote: > > Where does it call a varargs function? > > printf
Sorry that wasn't such a helpful response. Here, really: res = ((int(*)(char*, ...))(code))(format, doubleArg); Prior to that point ffi_prep_cif_var and ffi_prep_closure_loc have set things up to expect a varargs function. The old test didn't test a closure call with variable arguments. Actually that makes my claims about calling functions differently to the way they were defined wrong. The old test didn't actually do that, since there was another ffi_prep_cif call that said the closure was not varargs, and the call matched that. -- Alan Modra Australia Development Lab, IBM