From def89ac079c22b8bbf99358a905d10e851febbf7 Mon Sep 17 00:00:00 2001 From: "Daniel J. Hofmann" Date: Fri, 8 Apr 2016 11:38:07 +0200 Subject: [PATCH] Conform to v5 spec and support "unlimited" as radiuses value. Supersedes: https://github.com/Project-OSRM/osrm-backend/pull/2231 Thanks to Michael Krasnyk (@oxidase) for figuring out the reason for the segfault earlier: > https://github.com/Project-OSRM/osrm-backend/pull/2231#issuecomment-207114226 --- include/server/api/base_parameters_grammar.hpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/server/api/base_parameters_grammar.hpp b/include/server/api/base_parameters_grammar.hpp index 06de844f4..b0745d824 100644 --- a/include/server/api/base_parameters_grammar.hpp +++ b/include/server/api/base_parameters_grammar.hpp @@ -7,10 +7,12 @@ #include "engine/hint.hpp" #include "engine/polyline_compressor.hpp" +#include //#define BOOST_SPIRIT_DEBUG #include #include +#include namespace osrm { @@ -102,7 +104,9 @@ struct BaseParametersGrammar : boost::spirit::qi::grammar polyline_chars = qi::char_("a-zA-Z0-9_.--[]{}@?|\\%~`^"); base64_char = qi::char_("a-zA-Z0-9--_="); - radiuses_rule = qi::lit("radiuses=") >> -qi::double_ % ";"; + unlimited.add("unlimited", std::numeric_limits::infinity()); + + radiuses_rule = qi::lit("radiuses=") >> -(unlimited | qi::double_) % ";"; hints_rule = qi::lit("hints=") >> qi::as_string[qi::repeat(engine::ENCODED_HINT_SIZE)[base64_char]][add_hint] % ";"; @@ -125,6 +129,7 @@ struct BaseParametersGrammar : boost::spirit::qi::grammar qi::rule bearings_rule; qi::rule hints_rule; qi::rule polyline_rule, location_rule; + qi::symbols unlimited; qi::rule radiuses_rule; qi::rule base64_char; qi::rule alpha_numeral, polyline_chars;