Don't bail out on 0 chars in comments
authorLars Knoll <lars.knoll@digia.com>
Tue, 11 Dec 2012 06:50:10 +0000 (07:50 +0100)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 11 Dec 2012 13:50:32 +0000 (14:50 +0100)
Gets a few more parser tests in the test suite to pass.

Change-Id: Id9ac5211f64aafdd621f6187ad7061ff967bc947
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>

src/qml/qml/parser/qqmljslexer.cpp
src/qml/qml/parser/qqmljslexer_p.h

index 1270fdb..4e15065 100644 (file)
@@ -136,6 +136,7 @@ void Lexer::setCode(const QString &code, int lineno, bool qmlMode)
     _tokenSpell = QStringRef();
 
     _codePtr = code.unicode();
+    _endPtr = _codePtr + code.length();
     _lastLinePtr = _codePtr;
     _tokenLinePtr = _codePtr;
     _tokenStartPtr = _codePtr;
@@ -448,7 +449,7 @@ again:
     case '/':
         if (_char == QLatin1Char('*')) {
             scanChar();
-            while (!_char.isNull()) {
+            while (_codePtr <= _endPtr) {
                 if (_char == QLatin1Char('*')) {
                     scanChar();
                     if (_char == QLatin1Char('/')) {
@@ -466,7 +467,7 @@ again:
                 }
             }
         } else if (_char == QLatin1Char('/')) {
-            while (!_char.isNull() && !isLineTerminator()) {
+            while (_codePtr <= _endPtr && !isLineTerminator()) {
                 scanChar();
             }
             if (_engine) {
index 66dbb39..e8ffbd3 100644 (file)
@@ -211,6 +211,7 @@ private:
     QStringRef _tokenSpell;
 
     const QChar *_codePtr;
+    const QChar *_endPtr;
     const QChar *_lastLinePtr;
     const QChar *_tokenLinePtr;
     const QChar *_tokenStartPtr;