summaryrefslogtreecommitdiff
path: root/games-mud/tf/files/tf-50_beta8-stdarg.patch
diff options
context:
space:
mode:
Diffstat (limited to 'games-mud/tf/files/tf-50_beta8-stdarg.patch')
-rw-r--r--games-mud/tf/files/tf-50_beta8-stdarg.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/games-mud/tf/files/tf-50_beta8-stdarg.patch b/games-mud/tf/files/tf-50_beta8-stdarg.patch
new file mode 100644
index 000000000000..a34b70abe1fd
--- /dev/null
+++ b/games-mud/tf/files/tf-50_beta8-stdarg.patch
@@ -0,0 +1,30 @@
+diff -U5 -r a/src/tfio.c b/src/tfio.c
+--- a/src/tfio.c 2007-01-13 18:12:39.000000000 -0500
++++ b/src/tfio.c 2007-02-02 16:50:12.000000000 -0500
+@@ -495,10 +495,11 @@
+ const char *q, *sval;
+ char *specptr, quote;
+ const conString *Sval;
+ int len, min, max, leftjust, stars;
+ attr_t attrs = buf->attrs;
++ va_list aq;
+
+ if (!(flags & SP_APPEND) && buf->data) Stringtrunc(buf, 0);
+ while (*fmt) {
+ if (*fmt != '%' || *++fmt == '%') {
+ for (q = fmt + 1; *q && *q != '%'; q++);
+@@ -520,11 +521,13 @@
+ switch (*fmt) {
+ case 'd': case 'i':
+ case 'x': case 'X': case 'u': case 'o':
+ case 'f': case 'e': case 'E': case 'g': case 'G':
+ case 'p':
+- vsprintf(tempbuf, spec, ap);
++ va_copy(aq, ap);
++ vsprintf(tempbuf, spec, aq);
++ va_end(aq);
+ Stringcat(buf, tempbuf);
+ /* eat the arguments used by vsprintf() */
+ while (stars--) (void)va_arg(ap, int);
+ switch (*fmt) {
+ case 'd': case 'i':