diff --git a/include/fast_float/float_common.h b/include/fast_float/float_common.h index 73e44c4..bb79dc8 100644 --- a/include/fast_float/float_common.h +++ b/include/fast_float/float_common.h @@ -124,7 +124,7 @@ struct span { span(const T* _ptr, size_t _length) : ptr(_ptr), length(_length) {} span() : ptr(nullptr), length(0) {} - constexpr size_t len() noexcept { + constexpr size_t len() const noexcept { return length; } diff --git a/tests/long_exhaustive32_64.cpp b/tests/long_exhaustive32_64.cpp index 5f7dafd..0a58895 100644 --- a/tests/long_exhaustive32_64.cpp +++ b/tests/long_exhaustive32_64.cpp @@ -30,7 +30,12 @@ void all_32bit_values() { std::cerr << "parsing error ? " << buffer << std::endl; abort(); } - if(copysign(1,result_value) != copysign(1,v)) { + if (std::isnan(v)) { + if (!std::isnan(result_value)) { + std::cerr << "not nan" << buffer << std::endl; + abort(); + } + } else if(copysign(1,result_value) != copysign(1,v)) { std::cerr << "I got " << std::hexfloat << result_value << " but I was expecting " << v << std::endl; abort(); diff --git a/tests/string_test.cpp b/tests/string_test.cpp index 20f159a..53f17a4 100644 --- a/tests/string_test.cpp +++ b/tests/string_test.cpp @@ -59,6 +59,7 @@ bool test() { const char * end = input.data() + input.size(); for(size_t i = 0; i < answers.size(); i++) { T result_value; + while((begin < end) && (std::isspace(*begin))) { begin++; } auto result = fast_float::from_chars(begin, end, result_value); if (result.ec != std::errc()) {