Reviewed by Dave.
[WebKit-https.git] / WebCore / khtml / misc / stringit.h
index bfc6678..f06253c 100644 (file)
@@ -67,9 +67,9 @@ private:
 class TokenizerString
 {
 public:
-    TokenizerString() : m_lines(0), m_composite(false) {}
-    TokenizerString(const QChar *str, int length) : m_currentString(str, length), m_lines(0), m_composite(false) {}
-    TokenizerString(const QString &str) : m_currentString(str), m_lines(0), m_composite(false) {}
+    TokenizerString() : m_currentChar(0), m_lines(0), m_composite(false) {}
+    TokenizerString(const QChar *str, int length) : m_currentString(str, length), m_currentChar(m_currentString.m_current), m_lines(0), m_composite(false) {}
+    TokenizerString(const QString &str) : m_currentString(str), m_currentChar(m_currentString.m_current), m_lines(0), m_composite(false) {}
 
     void clear();
 
@@ -77,9 +77,10 @@ public:
     void prepend(const TokenizerString &);
     
     void push(QChar c) {
-        if (m_pushedChar1.isNull())
+        if (m_pushedChar1.isNull()) {
             m_pushedChar1 = c;
-        else {
+           m_currentChar = m_pushedChar1.isNull() ? m_currentString.m_current : &m_pushedChar1;
+       } else {
             assert(m_pushedChar2.isNull());
             m_pushedChar2 = c;
         }
@@ -97,6 +98,7 @@ public:
             if (--m_currentString.m_length == 0)
                 advanceSubstring();
         }
+       m_currentChar = m_pushedChar1.isNull() ? m_currentString.m_current: &m_pushedChar1;
     }
     
     bool escaped() const { return !m_pushedChar1.isNull(); }
@@ -115,11 +117,12 @@ private:
     void prepend(const TokenizerSubstring &);
 
     void advanceSubstring();
-    const QChar *current() const { return m_pushedChar1.isNull() ? m_currentString.m_current : &m_pushedChar1; }
+    const QChar *current() const { return m_currentChar; }
 
     QChar m_pushedChar1;
     QChar m_pushedChar2;
     TokenizerSubstring m_currentString;
+    const QChar *m_currentChar;
     QValueList<TokenizerSubstring> m_substrings;
     int m_lines;
     bool m_composite;