Index: GSFFIInvocation.m =================================================================== RCS file: /cvsroot/gnustep/gnustep/core/base/Source/GSFFIInvocation.m,v retrieving revision 1.29 diff -u -r1.29 GSFFIInvocation.m --- GSFFIInvocation.m 2 Sep 2004 16:35:44 -0000 1.29 +++ GSFFIInvocation.m 7 Dec 2004 21:09:21 -0000 @@ -235,14 +266,18 @@ frame: (cifframe_t *)frame signature: (NSMethodSignature*)aSignature { +//printf("%s\n",__PRETTY_FUNCTION__); int i; _sig = RETAIN(aSignature); _numArgs = [aSignature numberOfArguments]; _info = [aSignature methodInfo]; _cframe = frame; ((cifframe_t *)_cframe)->cif = *cif; +//dump_cframe(_cframe); -#if MFRAME_STRUCT_BYREF +#if 0 +#if MFRAME_STRUCT_BYREF +//printf("fix up\n"); /* Fix up some of the values. Do this on all processors that pass structs by reference. Is there an automatic way to determine this? */ for (i = 0; i < ((cifframe_t *)_cframe)->nargs; i++) @@ -261,9 +296,18 @@ } } #else +//printf("set values to %p\n",vals); ((cifframe_t *)_cframe)->values = vals; #endif +#endif + for (i = 0; i < ((cifframe_t *)_cframe)->nargs; i++) + { + memcpy(((cifframe_t *)_cframe)->values[i], vals[i], + ((cifframe_t *)_cframe)->arg_types[i]->size); + } + _retval = retp; +//printf("%s return %@\n",__PRETTY_FUNCTION__,self); return self; }