From 7fb915b6e83a7c590b3eace59b3adb4034fca4b4 Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Mon, 22 Oct 2018 23:05:56 +0100 Subject: [PATCH] src/dfa/closure_posix.cc: fix pack() to drop two highest bits ```c longest | (leftmost << 30); ``` assumes `longest` does not exceed 30 bits. It could if it's a negative value originally. Signed-off-by: Sergei Trofimovich --- re2c/src/dfa/closure_posix.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/re2c/src/dfa/closure_posix.cc b/re2c/src/dfa/closure_posix.cc index c33e7302..d110d73f 100644 --- a/re2c/src/dfa/closure_posix.cc +++ b/re2c/src/dfa/closure_posix.cc @@ -204,6 +204,7 @@ void orders(determ_context_t &ctx) static uint32_t pack_u32(uint32_t longest, uint32_t leftmost) { // leftmost: higher 2 bits, longest: lower 30 bits + longest &= ~0u >> 2; return longest | (leftmost << 30); } -- 2.50.1