From: Francesco Chemolli Date: Thu, 22 May 2014 17:30:42 +0000 (+0200) Subject: Fix Tokenizer::token X-Git-Tag: SQUID_3_5_0_1~217^2~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=15684f54a44e6edcc4cf4f0f7ec705f19d346acb;p=thirdparty%2Fsquid.git Fix Tokenizer::token --- diff --git a/src/parser/Tokenizer.cc b/src/parser/Tokenizer.cc index 795c6ea544..9be59279cc 100644 --- a/src/parser/Tokenizer.cc +++ b/src/parser/Tokenizer.cc @@ -5,14 +5,14 @@ bool Parser::Tokenizer::token(SBuf &returnedToken, const CharacterSet &delimiters) { SBuf savebuf(buf_); - SBuf saveRetVal(returnedToken); + SBuf retval; + SBuf::size_type tokenLen = 0; skip(delimiters); - if (!prefix(returnedToken,delimiters)) { - buf_=savebuf; - returnedToken=saveRetVal; - return false; - } + // can't use prefix as we're looking for the first char not in delimiters + tokenLen = buf_.findFirstOf(delimiters); // not found = npos => consume to end + retval = buf_.consume(tokenLen); skip(delimiters); + returnedToken = retval; return true; } diff --git a/src/parser/testTokenizer.cc b/src/parser/testTokenizer.cc index 1d5795af03..a329853632 100644 --- a/src/parser/testTokenizer.cc +++ b/src/parser/testTokenizer.cc @@ -95,10 +95,6 @@ testTokenizer::testTokenizerToken() CPPUNIT_ASSERT(t.token(s,whitespace)); CPPUNIT_ASSERT_EQUAL(SBuf("Host:"),s); - SBuf s2(s); - //no separator found - CPPUNIT_ASSERT(!t.token(s,tab)); - CPPUNIT_ASSERT_EQUAL(s2,s); // check that the output parameter was untouched } void