Hi, On PPC you cannot assign va_list's by =, you need to use the canon "va_copy" way. This adds autoconf checks and respective code in msvcrt/process.c Ciao, Marcus License: LGPL Changelog: Copy va_lists by using va_copy, not by just assigning them. Index: configure.ac =================================================================== RCS file: /home/wine/wine/configure.ac,v retrieving revision 1.67 diff -u -r1.67 configure.ac --- configure.ac 3 Aug 2002 00:25:59 -0000 1.67 +++ configure.ac 7 Aug 2002 07:44:55 -0000 @@ -447,6 +447,34 @@ AC_DEFINE(HAVE_PPDEV, 1, [Define if we can use ppdev.h for parallel port access]) fi +dnl **** Check for va_copy **** +AC_CACHE_CHECK([for va_copy], ac_cv_c_va_copy, + AC_TRY_LINK( + [#include <stdarg.h>], + [va_list ap1, ap2; + va_copy(ap1,ap2); + ], + [ac_cv_c_va_copy="yes"], + [ac_cv_c_va_copy="no"]) + ) +if test "$ac_cv_c_va_copy" = "yes" +then + AC_DEFINE(HAVE_VA_COPY, 1, [Define if we have va_copy]) +fi +AC_CACHE_CHECK([for __va_copy], ac_cv_c___va_copy, + AC_TRY_LINK( + [#include <stdarg.h>], + [va_list ap1, ap2; + __va_copy(ap1,ap2); + ], + [ac_cv_c___va_copy="yes"], + [ac_cv_c___va_copy="no"]) + ) +if test "$ac_cv_c___va_copy" = "yes" +then + AC_DEFINE(HAVE___VA_COPY, 1, [Define if we have __va_copy]) +fi + dnl **** Check for IPX (currently Linux only) **** AC_CACHE_CHECK([for GNU style IPX support], ac_cv_c_ipx_gnu, AC_TRY_COMPILE( Index: dlls/msvcrt/process.c =================================================================== RCS file: /home/wine/wine/dlls/msvcrt/process.c,v retrieving revision 1.12 diff -u -r1.12 process.c --- dlls/msvcrt/process.c 19 Jul 2002 03:24:50 -0000 1.12 +++ dlls/msvcrt/process.c 7 Aug 2002 07:44:55 -0000 @@ -25,6 +25,10 @@ * open file handles, sometimes not. The docs are confusing * -No check for maximum path/argument/environment size is done */ +#include "config.h" + +#include <stdarg.h> + #include "msvcrt.h" #include "ms_errno.h" @@ -141,11 +145,21 @@ */ static char* msvcrt_valisttos(const char* arg0, va_list alist, char delim) { - va_list alist2 = alist; + va_list alist2; long size; const char *arg; char* p; char *ret; + +#if HAVE_VA_COPY + va_copy(alist2,alist); +#else +# if HAVE___VA_COPY + __va_copy(alist2,alist); +# else + alist2 = alist; +# endif +#endif if (!arg0 && !delim) {