From 90555d0f0d0b8e4ffbbb37ba12a8e43020ad1e98 Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" Date: Mon, 10 Dec 2012 17:44:44 -0800 Subject: 1 << 31 is invalid for signed integers, fix it by making 1 unsigned. Found by Clang trunk's Undefined-Behavior Sanitizer. [more to come] --- Modules/_sre.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/_sre.c b/Modules/_sre.c index 38d0127..d74bf44 100644 --- a/Modules/_sre.c +++ b/Modules/_sre.c @@ -452,7 +452,7 @@ SRE_CHARSET(SRE_CODE* set, SRE_CODE ch) } else { /* (32 bits per code word) */ - if (ch < 256 && (set[ch >> 5] & (1 << (ch & 31)))) + if (ch < 256 && (set[ch >> 5] & (1u << (ch & 31)))) return ok; set += 8; } @@ -491,7 +491,7 @@ SRE_CHARSET(SRE_CODE* set, SRE_CODE ch) block = -1; set += 64; if (block >=0 && - (set[block*8 + ((ch & 255)>>5)] & (1 << (ch & 31)))) + (set[block*8 + ((ch & 255)>>5)] & (1u << (ch & 31)))) return ok; set += count*8; } -- cgit v0.12