summaryrefslogtreecommitdiff
path: root/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2020-12-19 17:12:05 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2021-02-24 22:20:33 +0300
commitfe18c518cf476ea5a2c3eede8bf6b994ec3105f2 (patch)
tree16f5ebb14ce1bd541412bf375ba5a44b5341c6b1 /libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx
parenta8ce5c380c69539fe0c7c62c397634d9d0c9fde2 (diff)
Various fixes
Diffstat (limited to 'libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx')
-rw-r--r--libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx7
1 files changed, 6 insertions, 1 deletions
diff --git a/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx b/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx
index 5ef2455..7bf2523 100644
--- a/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx
+++ b/libxsd/xsd/cxx/parser/validating/xml-schema-pimpl.txx
@@ -5,6 +5,7 @@
#include <locale>
#ifdef XSD_CXX11
+# include <cmath> // std::isfinite
# include <utility> // std::move
#endif
@@ -716,9 +717,13 @@ namespace xsd
zc_istream<C> is (str);
is.imbue (std::locale::classic ());
- //@@ TODO: now we accept scientific notations and INF/NaN.
+ // Note that std::isfinite() returns false for INF/NaN.
//
+#ifdef XSD_CXX11
+ if (!(is >> value_ && std::isfinite (value_) && is.exhausted ()))
+#else
if (!(is >> value_ && is.exhausted ()))
+#endif
throw invalid_value<C> (bits::decimal<C> (), str);
}