]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Fix Tokenizer::token
authorFrancesco Chemolli <kinkie@squid-cache.org>
Thu, 22 May 2014 17:30:42 +0000 (19:30 +0200)
committerFrancesco Chemolli <kinkie@squid-cache.org>
Thu, 22 May 2014 17:30:42 +0000 (19:30 +0200)
src/parser/Tokenizer.cc
src/parser/testTokenizer.cc

index 795c6ea544d4b1e1a355e231f2d0b9ed396f6e74..9be59279ccc4a3f8a0e560491f594196ba20a37f 100644 (file)
@@ -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;
 }
 
index 1d5795af03ea319877c10b168f3264276e9227f9..a329853632e1ae8fe0ab45f119862a5427c5a307 100644 (file)
@@ -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