tags 294905 patch thanks Hi,
Attached is a patch which fixes 2 va_list misuses in a2ps, leading (lib/printlen.c) to the reported bug, and while I was at it, it still printed garbage on amd64, so lib/title.c got its fix, too. Tested on powerpc and amd64. JB. -- Julien BLACHE <http://www.jblache.org> <[EMAIL PROTECTED]> GPG KeyID 0xF5D65169
--- orig/a2ps-4.13b/lib/printlen.c 1999-08-31 19:42:42.000000000 +0200 +++ a2ps-4.13b/lib/printlen.c 2005-02-12 19:17:06.649319648 +0100 @@ -28,14 +28,11 @@ unsigned long strtoul (); static int -int_printflen (const char *format, va_list *args) +int_printflen (const char *format, va_list ap) { const char *cp; int total_width = 0; int width = 0; - va_list ap; - - memcpy (&ap, args, sizeof (va_list)); for (cp = format ; *cp ; cp++) { @@ -99,7 +96,16 @@ int vprintflen (const char *format, va_list args) { - return int_printflen (format, &args); + va_list ap; + int ret; + + va_copy (ap, args); + + ret = int_printflen (format, ap); + + va_end(ap); + + return ret; } int --- orig/a2ps-4.13b/lib/title.c 1999-08-28 18:54:19.000000000 +0200 +++ a2ps-4.13b/lib/title.c 2005-02-12 19:42:07.635135120 +0100 @@ -83,11 +83,17 @@ VA_START (args, format); len = vprintflen (format, args); + + va_end (args); + if (format [strlen (format) - 1] == '\n') len --; if (center_p) for (padding = 0 ; padding < 79 - len ; padding += 2) putc (' ', stream); + + VA_START (args, format); + # if HAVE_VPRINTF || _LIBC vfprintf (stream, format, args); # else