@@ -105,8 +105,7 @@ static void
105
105
elog_internal (int elevel , const char * fmt , va_list args )
106
106
{
107
107
bool wrote_to_file = false,
108
- write_to_error_log ,
109
- write_to_stderr ;
108
+ write_to_error_log ;
110
109
va_list error_args ,
111
110
std_args ;
112
111
@@ -119,6 +118,9 @@ elog_internal(int elevel, const char *fmt, va_list args)
119
118
/* We need copy args only if we need write to error log file */
120
119
if (write_to_error_log )
121
120
va_copy (error_args , args );
121
+ /* We need copy args only if we need write to stderr */
122
+ if (elevel >= ERROR || !(log_filename && !logging_to_file ))
123
+ va_copy (std_args , args );
122
124
123
125
/*
124
126
* Write message to log file.
@@ -142,15 +144,6 @@ elog_internal(int elevel, const char *fmt, va_list args)
142
144
wrote_to_file = true;
143
145
}
144
146
145
- /*
146
- * Write to stderr if the message was not written to log file.
147
- * Write to stderr if the message level is greater than WARNING anyway.
148
- */
149
- write_to_stderr = !wrote_to_file || elevel >= ERROR ;
150
- /* We need copy args only if we need write to stderr */
151
- if (write_to_stderr )
152
- va_copy (std_args , error_args );
153
-
154
147
/*
155
148
* Write error message to error log file.
156
149
* Do not write to file if this error was raised during write previous
@@ -173,7 +166,11 @@ elog_internal(int elevel, const char *fmt, va_list args)
173
166
va_end (error_args );
174
167
}
175
168
176
- if (write_to_stderr )
169
+ /*
170
+ * Write to stderr if the message was not written to log file.
171
+ * Write to stderr if the message level is greater than WARNING anyway.
172
+ */
173
+ if (!wrote_to_file || elevel >= ERROR )
177
174
{
178
175
write_elevel (stderr , elevel );
179
176
0 commit comments