From d66d31914cbfff21a769d4e70b6b7245bed14410 Mon Sep 17 00:00:00 2001 From: Manuel Novoa III Date: Wed, 13 Mar 2002 04:54:04 +0000 Subject: Apply Miles Bader's missing __va_copy() fix. --- libc/stdio/printf.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'libc/stdio/printf.c') diff --git a/libc/stdio/printf.c b/libc/stdio/printf.c index ea066bb87..8efa7dd5b 100644 --- a/libc/stdio/printf.c +++ b/libc/stdio/printf.c @@ -468,7 +468,18 @@ void _ppfs_prepargs(register ppfs_t *ppfs, va_list arg) { int i; +#ifdef __va_copy __va_copy(ppfs->arg, arg); +#else + /* TODO -- maybe create a bits/vacopy.h for arch specific versions + * to ensure we get the right behavior? Either that or fall back + * on the portable (but costly in size) method of using a va_list *. + * That means a pointer derefs in the va_arg() invocations... */ +#warning __va_copy is not defined, using a simple copy instead... + /* the glibc manual suggests that this will usually suffice when + __va_copy doesn't exist. */ + ppfs->arg = arg; +#endif if ((i = ppfs->maxposarg) > 0) { /* init for positional args */ ppfs->num_data_args = i; -- cgit v1.2.3