From 77961bf9a4886bddc3ab567aeb1093943ff816ca Mon Sep 17 00:00:00 2001 From: Pavel Belikov Date: Tue, 25 Jun 2019 21:43:00 +0300 Subject: Fixes #75 : Check istringstream state in ValueParser --- args.hxx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'args.hxx') diff --git a/args.hxx b/args.hxx index 09c1919..563169c 100644 --- a/args.hxx +++ b/args.hxx @@ -3256,9 +3256,14 @@ namespace args operator ()(const std::string &name, const std::string &value, T &destination) { std::istringstream ss(value); - ss >> destination >> std::ws; + bool failed = !(ss >> destination); - if (ss.rdbuf()->in_avail() > 0) + if (!failed) + { + ss >> std::ws; + } + + if (ss.rdbuf()->in_avail() > 0 || failed) { #ifdef ARGS_NOEXCEPT (void)name; -- cgit v1.2.1