From 4d9bb3f082b6e8b9ae159028b41cd2caa80ce936 Mon Sep 17 00:00:00 2001 From: Jedrzej Nowacki Date: Thu, 20 Aug 2009 18:15:55 +0200 Subject: Fix JavaScriptCore::Lexer column count Column number is rest after each new line character in the source code. Reviewed-by: Kent Hansen --- src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp | 7 +++++-- src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h | 4 ++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp index b22832f..a0a6a74 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.cpp @@ -59,6 +59,7 @@ static const UChar byteOrderMark = 0xFEFF; Lexer::Lexer(JSGlobalData* globalData) : m_isReparsing(false) , m_globalData(globalData) + , m_startColumnNumberCorrection(0) , m_keywordTable(JSC::mainTable) { m_buffer8.reserveInitialCapacity(initialReadBufferCapacity); @@ -201,6 +202,7 @@ void Lexer::shiftLineTerminator() else shift1(); + m_startColumnNumberCorrection = currentOffset(); ++m_lineNumber; } @@ -900,8 +902,9 @@ returnToken: { int lineNumber = m_lineNumber; llocp->first_line = lineNumber; llocp->last_line = lineNumber; - llocp->first_column = startOffset; - llocp->last_column = currentOffset(); + + llocp->first_column = startOffset - m_startColumnNumberCorrection; + llocp->last_column = currentOffset() - m_startColumnNumberCorrection; m_lastToken = token; return token; diff --git a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h index 2583162..0ef6dd4 100644 --- a/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h +++ b/src/3rdparty/webkit/JavaScriptCore/parser/Lexer.h @@ -87,6 +87,10 @@ namespace JSC { static const size_t initialIdentifierTableCapacity = 64; int m_lineNumber; + // this variable is supposed to keep index of last new line character ('\n' or '\r\n'or '\n\r'...) + // it is importent to calculate correct first_column in parser + int m_startColumnNumberCorrection; + Vector m_buffer8; Vector m_buffer16; -- cgit v0.12