From: Harald Welte Date: Sat, 2 Jul 2011 19:51:32 +0000 (+0200) Subject: fix against corrupted output in parallel logging X-Git-Url: http://git.rot13.org/?p=osmocom-bb.git;a=commitdiff_plain;h=da127cbb3eb5674b09fa195d09b047f0b2914b7f fix against corrupted output in parallel logging 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 ;) --- diff --git a/src/logging.c b/src/logging.c index 730fc37..948b2a6 100644 --- a/src/logging.c +++ b/src/logging.c @@ -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); } }