diff --git a/src/pugixpath.cpp b/src/pugixpath.cpp index 70fe612..4897523 100644 --- a/src/pugixpath.cpp +++ b/src/pugixpath.cpp @@ -387,7 +387,7 @@ namespace if (is_chartype(*string, ct_space)) { while (is_chartype(*string, ct_space)) ++string; - if (*string) return gen_nan(); + return *string ? gen_nan() : r; } if (*string != '.') return gen_nan(); diff --git a/tests/test_xpath_functions.cpp b/tests/test_xpath_functions.cpp index a0c59b8..ed2c47a 100644 --- a/tests/test_xpath_functions.cpp +++ b/tests/test_xpath_functions.cpp @@ -16,11 +16,13 @@ TEST_XML(xpath_number_number, "123") CHECK_XPATH_NUMBER(c, "number(' -123.')", -123); CHECK_XPATH_NUMBER(c, "number('123.')", 123); CHECK_XPATH_NUMBER(c, "number('.56')", 0.56); + CHECK_XPATH_NUMBER(c, "number('123 ')", 123); CHECK_XPATH_NUMBER_NAN(c, "number('foobar')"); CHECK_XPATH_NUMBER_NAN(c, "number('f1')"); CHECK_XPATH_NUMBER_NAN(c, "number('1f')"); CHECK_XPATH_NUMBER_NAN(c, "number('1.f')"); CHECK_XPATH_NUMBER_NAN(c, "number('1.0f')"); + CHECK_XPATH_NUMBER_NAN(c, "number('123 f')"); // number with 1 bool argument CHECK_XPATH_NUMBER(c, "number(true())", 1);