]> granicus.if.org Git - re2c/commit
Check if code point exceeds maximum. Correctly cast 'char' to 'uint32_t'.
authorUlya Trofimovich <skvadrik@gmail.com>
Thu, 20 Aug 2015 11:09:52 +0000 (12:09 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Thu, 20 Aug 2015 11:09:52 +0000 (12:09 +0100)
commit0346d1666f58da5dbe35d156e0487d95354153ff
treeee4ce55ba85a0e3e6ace1611fd2dc3afb6fdf3c4
parentcd4c7d830be98d7f957a084593bdeeac1b4f3496
Check if code point exceeds maximum. Correctly cast 'char' to 'uint32_t'.

First fix:
re2c used to check if code point exceeds maximal value for current
encoding when parsing it. When I moved parsing code points to lexer
I forgot the check.

Second fix:
I assumed that 'static_cast<uint32_t>' on 'signed char' zero-extends.
But I was wrong: it sign-extends. Need to cast to 'unsigned char'
instead.
re2c/bootstrap/src/parse/scanner_lex.cc
re2c/src/ir/regexp/encoding/enc.cc
re2c/src/ir/regexp/encoding/enc.h
re2c/src/parse/scanner_lex.re