From db9e5f3b78149518ed9870e52cd1952fc975d643 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 28 Mar 2018 22:05:54 -0700 Subject: [PATCH] ircd::json: Improve validator grammar; clarify magic number. --- ircd/json.cc | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/ircd/json.cc b/ircd/json.cc index 21931cacc..e2975325e 100644 --- a/ircd/json.cc +++ b/ircd/json.cc @@ -1758,7 +1758,7 @@ ircd::json::serialized(const value &v) case STRING: { if(!v.string) - return 2; + return size(empty_string); size_t ret(v.len); const string_view sv{v.string, v.len}; @@ -2192,8 +2192,13 @@ ircd::json::valid(const string_view &s, std::nothrow_t) noexcept try { + static const parser::rule<> validator + { + parser.value(0) >> eoi + }; + const char *start(begin(s)), *const stop(end(s)); - return qi::parse(start, stop, parser.value(0) >> eoi); + return qi::parse(start, stop, validator); } catch(...) { @@ -2204,8 +2209,13 @@ void ircd::json::valid(const string_view &s) try { + static const parser::rule<> validator + { + eps > parser.value(0) > eoi + }; + const char *start(begin(s)), *const stop(end(s)); - qi::parse(start, stop, eps > (parser.value(0) >> eoi)); + qi::parse(start, stop, validator); } catch(const qi::expectation_failure &e) {