From e71c57467c35e04a1b95a3f1f784571e5b411742 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Thu, 24 Oct 2013 15:17:30 +0200 Subject: [PATCH] printf-hook-builtin: Don't rely on isinf() return value signedness Many systems don't return a negative value for negative infinities; so do a separate check. --- .../utils/printf_hook/printf_hook_builtin.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/libstrongswan/utils/printf_hook/printf_hook_builtin.c b/src/libstrongswan/utils/printf_hook/printf_hook_builtin.c index ec0a418d8..d00abef20 100644 --- a/src/libstrongswan/utils/printf_hook/printf_hook_builtin.c +++ b/src/libstrongswan/utils/printf_hook/printf_hook_builtin.c @@ -926,15 +926,16 @@ int builtin_vsnprintf(char *buffer, size_t n, const char *format, va_list ap) double dval; dval = va_arg(ap, double); - if (isinf(dval) == 1) + if (isinf(dval)) { - sarg = flags & FL_UPPER ? "INF" : "inf"; - slen = strlen(sarg); - goto is_string; - } - if (isinf(dval) == -1) - { - sarg = flags & FL_UPPER ? "-INF" : "-inf"; + if (isgreater(dval, 0.0)) + { + sarg = flags & FL_UPPER ? "INF" : "inf"; + } + else + { + sarg = flags & FL_UPPER ? "-INF" : "-inf"; + } slen = strlen(sarg); goto is_string; }