1 << 31 is invalid for signed integers, fix it by making 1 unsigned.

Found by Clang trunk's Undefined-Behavior Sanitizer.  [more to come]
This commit is contained in:
Gregory P. Smith 2012-12-10 17:45:54 -08:00
parent 33b9b71e8d
commit 64ab35e11d
1 changed files with 2 additions and 2 deletions

View File

@ -459,7 +459,7 @@ SRE_CHARSET(SRE_CODE* set, SRE_CODE ch)
}
else {
/* <CHARSET> <bitmap> (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;
}
@ -498,7 +498,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;
}