rsys

Basic data structures and low-level features
git clone git://git.meso-star.fr/rsys.git
Log | Files | Refs | README | LICENSE

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:
Msrc/cstr.h | 2+-
Msrc/test_cstr.c | 4++++
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);