# HG changeset patch # User Timo Sirainen # Date 1031872185 -10800 # Node ID 94382d79ae47c34b36a1dc8eac61cb5c2a2cf26b # Parent 79ae841efc110445e84b82f39f883b2ac05505ba make sure failure handlers don't modify errno. diff -r 79ae841efc11 -r 94382d79ae47 src/lib/failures.c --- a/src/lib/failures.c Wed Sep 11 20:45:03 2002 +0300 +++ b/src/lib/failures.c Fri Sep 13 02:09:45 2002 +0300 @@ -82,6 +82,8 @@ static void default_error_handler(const char *format, va_list args) { + int old_errno = errno; + write_prefix(); fputs("Error: ", log_fd); @@ -89,10 +91,14 @@ fputc('\n', log_fd); fflush(log_fd); + + errno = old_errno; } static void default_warning_handler(const char *format, va_list args) { + int old_errno = errno; + write_prefix(); fputs("Warning: ", log_fd); @@ -100,6 +106,8 @@ fputc('\n', log_fd); fflush(log_fd); + + errno = old_errno; } void i_panic(const char *format, ...) diff -r 79ae841efc11 -r 94382d79ae47 src/lib/failures.h --- a/src/lib/failures.h Wed Sep 11 20:45:03 2002 +0300 +++ b/src/lib/failures.h Fri Sep 13 02:09:45 2002 +0300 @@ -10,6 +10,7 @@ void i_error(const char *format, ...) __attr_format__(1, 2); void i_warning(const char *format, ...) __attr_format__(1, 2); +/* Change failure handlers. Make sure they don't modify errno. */ void i_set_panic_handler(FailureFunc func __attr_noreturn__); void i_set_fatal_handler(FailureFunc func __attr_noreturn__); void i_set_error_handler(FailureFunc func);