diff options
author | nyamatongwe <unknown> | 2011-03-27 12:11:51 +1100 |
---|---|---|
committer | nyamatongwe <unknown> | 2011-03-27 12:11:51 +1100 |
commit | 97359fb4230a10582c01f309ccfd1ac399ec0fcd (patch) | |
tree | 0aacb25658c934d34249b2d4a4e2ea9e257378a6 | |
parent | 790d04e00e42a613c132444def2faa432534d366 (diff) | |
download | scintilla-mirror-97359fb4230a10582c01f309ccfd1ac399ec0fcd.tar.gz |
Fix for bug with wrong recognition of number after regex literal. Bug #3209108.
Added test for this case.
-rw-r--r-- | lexers/LexHTML.cxx | 22 | ||||
-rw-r--r-- | test/examples/x.html | 1 | ||||
-rw-r--r-- | test/examples/x.html.styled | 1 |
3 files changed, 13 insertions, 11 deletions
diff --git a/lexers/LexHTML.cxx b/lexers/LexHTML.cxx index 546f5ad96..8e6b37434 100644 --- a/lexers/LexHTML.cxx +++ b/lexers/LexHTML.cxx @@ -318,19 +318,19 @@ static int classifyTagHTML(unsigned int start, unsigned int end, static void classifyWordHTJS(unsigned int start, unsigned int end, WordList &keywords, Accessor &styler, script_mode inScriptType) { + char s[30 + 1]; + unsigned int i = 0; + for (; i < end - start + 1 && i < 30; i++) { + s[i] = styler[start + i]; + } + s[i] = '\0'; + char chAttr = SCE_HJ_WORD; - bool wordIsNumber = IsADigit(styler[start]) || (styler[start] == '.'); - if (wordIsNumber) + bool wordIsNumber = IsADigit(s[0]) || ((s[0] == '.') && IsADigit(s[1])); + if (wordIsNumber) { chAttr = SCE_HJ_NUMBER; - else { - char s[30 + 1]; - unsigned int i = 0; - for (; i < end - start + 1 && i < 30; i++) { - s[i] = styler[start + i]; - } - s[i] = '\0'; - if (keywords.InList(s)) - chAttr = SCE_HJ_KEYWORD; + } else if (keywords.InList(s)) { + chAttr = SCE_HJ_KEYWORD; } styler.ColourTo(end, statePrintForState(chAttr, inScriptType)); } diff --git a/test/examples/x.html b/test/examples/x.html index 7fa1a9f0e..caebcf41a 100644 --- a/test/examples/x.html +++ b/test/examples/x.html @@ -1,5 +1,6 @@ <html xmlns="http://www.w3.org/1999/xhtml"> <script type="text/javascript"> +var b = /abc/i.test('abc'); 'x\ </t>' </script> diff --git a/test/examples/x.html.styled b/test/examples/x.html.styled index 5a6aebe5e..3e50a1147 100644 --- a/test/examples/x.html.styled +++ b/test/examples/x.html.styled @@ -1,5 +1,6 @@ {1}<html{8} {3}xmlns{8}={6}"http://www.w3.org/1999/xhtml"{1}>{0} {1}<script{8} {3}type{8}={6}"text/javascript"{1}>{40} +{46}var{41} {46}b{41} {50}={41} {52}/abc/i{46}.test{50}({49}'abc'{50});{41} {49}'x\ </t>'{41} {1}</script>{0} |