aboutsummaryrefslogtreecommitdiffhomepage
path: root/common.c
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2006-12-14 20:01:31 +1000
committerGravatar axel <axel@liljencrantz.se>2006-12-14 20:01:31 +1000
commit52b74f9f343f6162781e0af8cf935ac448149dc5 (patch)
tree87dadc3430071b0851d55c46534a79e6172183a6 /common.c
parentb932a9a084135ed0a5db0a4d69301ed6c2231281 (diff)
Make sure debug() never alters errno, so that it can safely be called between an error and calling wperror()
darcs-hash:20061214100131-ac50b-b1c2e4819567fc35858233c265a26b934620fc6d.gz
Diffstat (limited to 'common.c')
-rw-r--r--common.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/common.c b/common.c
index a63cbce9..cef60d0d 100644
--- a/common.c
+++ b/common.c
@@ -548,14 +548,17 @@ int read_blocked(int fd, void *buf, size_t count)
void debug( int level, const wchar_t *msg, ... )
{
va_list va;
+
string_buffer_t sb;
string_buffer_t sb2;
+
+ int errno_old = errno;
- CHECK( msg, );
-
if( level > debug_level )
return;
+ CHECK( msg, );
+
sb_init( &sb );
sb_init( &sb2 );
@@ -570,6 +573,8 @@ void debug( int level, const wchar_t *msg, ... )
sb_destroy( &sb );
sb_destroy( &sb2 );
+
+ errno = errno_old;
}
void write_screen( const wchar_t *msg, string_buffer_t *buff )