From db9866677ebea77fd065248135f084139304a06c Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Mon, 13 Mar 2017 10:22:02 +0000 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20ref=20past=20end=20of=20string?= =?UTF-8?q?=20fixes=20#830?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/external/clara.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/external/clara.h b/include/external/clara.h index cbcafd56..4200d58f 100644 --- a/include/external/clara.h +++ b/include/external/clara.h @@ -554,12 +554,13 @@ namespace Clara { } void parseIntoTokens( std::string const& arg, std::vector& tokens ) { - for( std::size_t i = 0; i <= arg.size(); ++i ) { + for( std::size_t i = 0; i < arg.size(); ++i ) { char c = arg[i]; if( c == '"' ) inQuotes = !inQuotes; mode = handleMode( i, c, arg, tokens ); } + mode = handleMode( arg.size(), '\0', arg, tokens ); } Mode handleMode( std::size_t i, char c, std::string const& arg, std::vector& tokens ) { switch( mode ) { @@ -592,6 +593,7 @@ namespace Clara { default: from = i; return ShortOpt; } } + Mode handleOpt( std::size_t i, char c, std::string const& arg, std::vector& tokens ) { if( std::string( ":=\0", 3 ).find( c ) == std::string::npos ) return mode;