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