diff --git a/ChangeLog b/ChangeLog index b2487255..70014017 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-06-15 Nicolas François + + * lib/defines.h: Avoid implicit conversion of pointers to + booleans. + * lib/defines.h: Ignore return values of setlocale() except the + first call. + * lib/defines.h: Fix a splint observer warning by using an + intermediate variable (old_locale). + 2008-06-15 Nicolas François * libmisc/failure.c: Check return values. If lseek() failed, avoid diff --git a/lib/defines.h b/lib/defines.h index bfcd73f0..4d536fbe 100644 --- a/lib/defines.h +++ b/lib/defines.h @@ -154,17 +154,20 @@ char *strchr (), *strrchr (), *strtok (); * --Nekral */ #define SYSLOG(x) \ do { \ - char *saved_locale = setlocale(LC_ALL, NULL); \ - if (saved_locale) \ - saved_locale = strdup(saved_locale); \ - if (saved_locale) \ - setlocale(LC_ALL, "C"); \ - syslog x ; \ - if (saved_locale) { \ - setlocale(LC_ALL, saved_locale); \ - free(saved_locale); \ + char *old_locale = setlocale(LC_ALL, NULL); \ + char *saved_locale = NULL; \ + if (NULL != old_locale) { \ + saved_locale = strdup (old_locale); \ } \ - } while (0) + if (NULL != saved_locale) { \ + (void) setlocale (LC_ALL, "C"); \ + } \ + syslog x ; \ + if (NULL != saved_locale) { \ + (void) setlocale (LC_ALL, saved_locale); \ + free (saved_locale); \ + } \ + } while (false) #else /* !ENABLE_NLS */ #define SYSLOG(x) syslog x #endif /* !ENABLE_NLS */