From 96f2411a2bbf985d5575489747a904ccc0f6594a Mon Sep 17 00:00:00 2001 From: Vincent Bernat Date: Thu, 25 Jul 2013 00:39:39 +0200 Subject: [PATCH] lib: fix parsing of "11542." The case was correctly handled but clz() does not handle 0 as its argument. --- src/lib/fixedpoint.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/fixedpoint.c b/src/lib/fixedpoint.c index 5588b8f4..7c99eef9 100644 --- a/src/lib/fixedpoint.c +++ b/src/lib/fixedpoint.c @@ -76,8 +76,8 @@ fp_strtofp(const char *repr, char **end, while (e2++ != endptr) precision *= 10; result.fraction.value <<= fltbits; result.fraction.value /= precision; - result.fraction.precision = sizeof(precision) * 8 - - __builtin_clzll(precision - 1); + result.fraction.precision = (precision == 1)?1: + (sizeof(precision) * 8 - __builtin_clzll(precision - 1)); if (result.fraction.precision > fltbits) result.fraction.precision = fltbits; } -- 2.39.5