2
0
mirror of https://github.com/checkpoint-restore/criu synced 2025-08-30 13:58:34 +00:00

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: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Andrew Vagin <avagin@parallels.com>
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
This commit is contained in:
Cyrill Gorcunov
2015-03-26 11:23:12 +03:00
committed by Pavel Emelyanov
parent 019ab4b795
commit f76a57c29a

2
log.c
View File

@@ -155,6 +155,7 @@ unsigned int log_get_loglevel(void)
static void __print_on_level(unsigned int loglevel, const char *format, va_list params)
{
int fd, size, ret, off = 0;
int __errno = errno;
if (unlikely(loglevel == LOG_MSG)) {
fd = STDOUT_FILENO;
@@ -176,6 +177,7 @@ static void __print_on_level(unsigned int loglevel, const char *format, va_list
break;
off += ret;
}
errno = __errno;
}
void print_on_level(unsigned int loglevel, const char *format, ...)