fix against corrupted output in parallel logging
authorHarald Welte <laforge@gnumonks.org>
Sat, 2 Jul 2011 19:51:32 +0000 (21:51 +0200)
committerHarald Welte <laforge@gnumonks.org>
Sat, 2 Jul 2011 19:51:32 +0000 (21:51 +0200)
In 825607672215b7a12ea6e201a89cd5209f6d657f it was attempted to fix
a bug previously introduced by logging related changes.  The problem
is that a va_list can be corrupted after it has been used once, so
we need to va_copy before each successive use.

And if we copy it, we also need to use the copy, and not the original ;)

src/logging.c

index 730fc37..948b2a6 100644 (file)
@@ -261,7 +261,7 @@ static void _logp(int subsys, int level, char *file, int line,
                 * in undefined state. Since _output uses vsnprintf and it may
                 * be called several times, we have to pass a copy of ap. */
                va_copy(bp, ap);
-               _output(tar, subsys, level, file, line, cont, format, ap);
+               _output(tar, subsys, level, file, line, cont, format, bp);
                va_end(bp);
        }
 }