Mercurial > emacs
diff src/eval.c @ 109308:3200fb11db9d
Make doprnt and related functions ANSI C compliant, with prototypes.
* doprnt.c (doprnt): Take a va_list argument instead of count and
pointer.
* eval.c (error): Change to a standard-C variadic function.
* xdisp.c (vmessage): Renamed from message, made static, and
changed to take a va_list argument.
(message): New variadic wrapper.
(message_nolog): Now a variadic function, calling vmessage.
* lisp.h: Include stdarg.h for va_list.
(doprnt, error, message, message_nolog): Decls updated.
| author | Ken Raeburn <raeburn@raeburn.org> |
|---|---|
| date | Sun, 11 Jul 2010 02:59:55 -0400 |
| parents | 8cfee7d2955f |
| children | 988ceb510e6b |
line wrap: on
line diff
--- a/src/eval.c Sun Jul 11 09:39:00 2010 +0300 +++ b/src/eval.c Sun Jul 11 02:59:55 2010 -0400 @@ -2003,9 +2003,7 @@ /* VARARGS 1 */ void -error (m, a1, a2, a3) - char *m; - char *a1, *a2, *a3; +error (char *m, ...) { char buf[200]; int size = 200; @@ -2015,15 +2013,18 @@ int allocated = 0; Lisp_Object string; - args[0] = a1; - args[1] = a2; - args[2] = a3; - mlen = strlen (m); while (1) { - int used = doprnt (buffer, size, m, m + mlen, 3, args); + va_list ap; + int used; + + /* A va_list can't be reused if we have to go around the loop + again; we need to "reinitialize" it each time. */ + va_start(ap, m); + used = doprnt (buffer, size, m, m + mlen, ap); + va_end(ap); if (used < size) break; size *= 2;
