Commit f76a57c2 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Pavel Emelyanov

log: Don't modify global @errno in __print_on_level

The __print_on_level routine may modify global @errno
variable which is inacceptable: this is logging routine
which must be transparent to the rest of the program code.

Thus save @errno in local @__errno variable and restore
it on return.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Acked-by: 's avatarAndrew Vagin <avagin@parallels.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 019ab4b7
...@@ -155,6 +155,7 @@ unsigned int log_get_loglevel(void) ...@@ -155,6 +155,7 @@ unsigned int log_get_loglevel(void)
static void __print_on_level(unsigned int loglevel, const char *format, va_list params) static void __print_on_level(unsigned int loglevel, const char *format, va_list params)
{ {
int fd, size, ret, off = 0; int fd, size, ret, off = 0;
int __errno = errno;
if (unlikely(loglevel == LOG_MSG)) { if (unlikely(loglevel == LOG_MSG)) {
fd = STDOUT_FILENO; fd = STDOUT_FILENO;
...@@ -176,6 +177,7 @@ static void __print_on_level(unsigned int loglevel, const char *format, va_list ...@@ -176,6 +177,7 @@ static void __print_on_level(unsigned int loglevel, const char *format, va_list
break; break;
off += ret; off += ret;
} }
errno = __errno;
} }
void print_on_level(unsigned int loglevel, const char *format, ...) void print_on_level(unsigned int loglevel, const char *format, ...)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment