mpd@amd64
James R. Van Artsalen
james at jrv.org
Sat Dec 25 00:19:35 PST 2004
Archie Cobbs wrote:
> James R. Van Artsalen wrote:
>
>> I looked at this and it crashes starting up for me too. It crashes
>> in vprintf, within the second call to LogPrintf (), apparently while
>> logging ordinary startup messages. I don't see any obvious cause at
>> that point unfortunately.
>
>
> Can you try the attached patch? Someone else on the mpd-users mailing
> list had a similar problem and this helped.
Thanks, it works now.
Attached is a slightly different patch. This is against the source
currently in ports, and it fixes two additional questionable uses of
va_start ().
-------------- next part --------------
--- custom.c.~1~ Tue May 4 11:12:28 2004
+++ custom.c Fri Dec 24 17:03:03 2004
@@ -141,16 +141,19 @@
if (!bund)
return;
- va_start(args, fmt);
if (l == NULL) {
for (k = 0; k < bund->n_links; k++) {
- if (bund && bund->links[k])
+ if (bund && bund->links[k]) {
+ va_start(args, fmt);
RecordLinkUpDownReason2(bund->links[k], up, key, fmt, args);
+ va_end(args);
+ }
}
} else {
+ va_start(args, fmt);
RecordLinkUpDownReason2(l, up, key, fmt, args);
+ va_end(args);
}
- va_end(args);
}
static void
--- log.c.~1~ Tue May 4 11:12:28 2004
+++ log.c Fri Dec 24 16:42:52 2004
@@ -265,17 +265,21 @@
{
va_list args;
- va_start(args, fmt);
LogTimeStamp(logprintf);
+ va_start(args, fmt);
vlogprintf(fmt, args);
+ va_end(args);
+ va_start(args, fmt);
vlogprintf("\n", args); /* XXX args will be ignored */
+ va_end(args);
if (gLogOptions & LG_CONSOLE)
{
+ va_start(args, fmt);
vfprintf(stdout, fmt, args);
+ va_end(args);
putc('\n', stdout);
fflush(stdout);
}
- va_end(args);
}
/*
@@ -315,12 +319,16 @@
/* Dump it */
- va_start(ap, fmt);
- if (console)
+ if (console) {
+ va_start(ap, fmt);
LogDoDumpBp(printf, vprintf, FALSE, bp, fmt, ap);
- if (log)
+ va_end(ap);
+ }
+ if (log) {
+ va_start(ap, fmt);
LogDoDumpBp(logprintf, vlogprintf, TRUE, bp, fmt, ap);
- va_end(ap);
+ va_end(ap);
+ }
}
/*
@@ -342,11 +350,16 @@
/* Dump it */
- va_start(ap, fmt);
- if (console)
+ if (console) {
+ va_start(ap, fmt);
LogDoDumpBuf(printf, vprintf, FALSE, buf, count, fmt, ap);
- if (log)
+ va_end(ap);
+ }
+ if (log) {
+ va_start(ap, fmt);
LogDoDumpBuf(logprintf, vlogprintf, TRUE, buf, count, fmt, ap);
+ va_end(ap);
+ }
}
/*
--- modem.c.~1~ Tue May 4 11:12:28 2004
+++ modem.c Fri Dec 24 17:08:54 2004
@@ -610,10 +610,12 @@
/* Concat prefix and message */
va_start(args, fmt);
vsnprintf(buf, sizeof(buf), fmt, args);
+ va_end(args);
if (*buf != ' ')
snprintf(buf, sizeof(buf), "[%s] chat: ", lnk->name);
else
*buf = '\0';
+ va_start(args, fmt);
vsnprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), fmt, args);
va_end(args);
More information about the freebsd-amd64
mailing list