commit 232f064831b2e0d8ff7ae49cc4a746948d40aaf3
parent 4cd84904c4bd96b21b133991b796d7f99a7b1912
Author: vaplv <vaplv@free.fr>
Date: Tue, 10 Nov 2015 12:31:09 +0100
Fix a cstr_to_float regression issue
The parsing of the 0 floating point number returned a RES_BAD_ARG error.
Diffstat:
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/cstr.h b/src/cstr.h
@@ -51,7 +51,7 @@ cstr_to_float(const char* str, float* dst)
res = cstr_to_double(str, &dbl);
if(res != RES_OK) return res;
tmp = fabs(dbl);
- if (tmp != INF && (tmp < FLT_MIN || tmp > FLT_MAX))
+ if(tmp != INF && tmp > 0.0 && (tmp < FLT_MIN || tmp > FLT_MAX))
return RES_BAD_ARG;
*dst = (float)dbl;
return RES_OK;
diff --git a/src/test_cstr.c b/src/test_cstr.c
@@ -59,6 +59,10 @@ main(int argc, char** argv)
CHECK(f, (float)INF);
CHECK(cstr_to_float(STR(DBL_MAX), &f), RES_BAD_ARG);
CHECK(cstr_to_float(STR(DBL_MIN), &f), RES_BAD_ARG);
+ CHECK(cstr_to_float("0.0", &f), RES_OK);
+ CHECK(f, 0.f);
+ CHECK(cstr_to_float("-0.0", &f), RES_OK);
+ CHECK(f, 0.f);
CHECK(cstr_to_long(NULL, &l), RES_BAD_ARG);
CHECK(cstr_to_long("a", &l), RES_BAD_ARG);