From: pini Date: Sat, 18 Dec 2010 09:09:17 +0000 (+0000) Subject: Fix the fix that fixes parameter passing through makecontext. X-Git-Tag: v3.6_beta2~630 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/52b44ef3895813ad0d582d7aae8658d5a3c2e3b6?ds=sidebyside Fix the fix that fixes parameter passing through makecontext. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@9295 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/simix/smx_context_sysv.c b/src/simix/smx_context_sysv.c index b81509aa0b..0248f2840b 100644 --- a/src/simix/smx_context_sysv.c +++ b/src/simix/smx_context_sysv.c @@ -161,13 +161,17 @@ void smx_ctx_sysv_wrapper(int count, ...) uintptr_t ctx_addr = 0; va_list ap; smx_ctx_sysv_t context; - int i; va_start(ap, count); +#if (SIZEOF_VOIDP <= SIZEOF_INT) + ctx_addr = (uintptr_t)va_arg(ap, int); +#else + int i; for(i = 0; i < count; i++) { ctx_addr <<= 8*sizeof(int); ctx_addr |= (uintptr_t)va_arg(ap, int); } +#endif va_end(ap); context = (smx_ctx_sysv_t)ctx_addr; (context->super.code) (context->super.argc, context->super.argv);