Line 0
Link Here
|
|
|
1 |
diff --git a/report.c b/report.c |
2 |
index 31d4e48..2a731ac 100644 |
3 |
--- ./report.c~ |
4 |
+++ ./report.c |
5 |
@@ -238,11 +238,17 @@ report_build (FILE *errfp, message, va_alist) |
6 |
rep_ensuresize(); |
7 |
|
8 |
#if defined(VA_START) |
9 |
- VA_START (args, message); |
10 |
for ( ; ; ) |
11 |
{ |
12 |
+ /* |
13 |
+ * args has to be initialized before every call of vsnprintf(), |
14 |
+ * because vsnprintf() invokes va_arg macro and thus args is |
15 |
+ * undefined after the call. |
16 |
+ */ |
17 |
+ VA_START(args, message); |
18 |
n = vsnprintf (partial_message + partial_message_size_used, partial_message_size - partial_message_size_used, |
19 |
message, args); |
20 |
+ va_end (args); |
21 |
|
22 |
if (n >= 0 |
23 |
&& (unsigned)n < partial_message_size - partial_message_size_used) |
24 |
@@ -254,7 +260,6 @@ report_build (FILE *errfp, message, va_alist) |
25 |
partial_message_size += 2048; |
26 |
partial_message = REALLOC (partial_message, partial_message_size); |
27 |
} |
28 |
- va_end (args); |
29 |
#else |
30 |
for ( ; ; ) |
31 |
{ |