From 15684f54a44e6edcc4cf4f0f7ec705f19d346acb Mon Sep 17 00:00:00 2001 From: Francesco Chemolli Date: Thu, 22 May 2014 19:30:42 +0200 Subject: [PATCH] Fix Tokenizer::token --- src/parser/Tokenizer.cc | 12 ++++++------ src/parser/testTokenizer.cc | 4 ---- 2 files changed, 6 insertions(+), 10 deletions(-) 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 -- 2.47.2