On Thu, 14 May 2015, Dingbao Xie wrote:
> Attachment are two files to reproduce the undefined behavior.
<snip>
> src/pcre2_compile.c:6665:45: runtime error: left shift of 1 by 31 places
> cannot be represented in type 'int'
Thank you for reporting this. I am not a C++ user, nor do I have clang
installed, but I was eventually able to reproduce this with gcc, using
the options -fsanitize=undefined -std=c99. I have fixed the issue in
four places (by changing "1 << x" to "1u << x") and I have committed
the patched code (it's now at r267).
The use of -fsanitize=undefined has shown up some other issues in PCRE2,
which I will try to fix shortly. I will then add a compile using this
option to the tests that are done before each release.