avoid shift out-of-range error
UBSAN gave in Regex.Unicode test: include/rapidjson/encodings.h:157:28: runtime error: shift exponent 32 is too large for 32-bit type 'int'
This commit is contained in:
parent
9dcf51c3a1
commit
05f0592b34
@ -154,7 +154,11 @@ struct UTF8 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned char type = GetRange(static_cast<unsigned char>(c));
|
unsigned char type = GetRange(static_cast<unsigned char>(c));
|
||||||
*codepoint = (0xFF >> type) & static_cast<unsigned char>(c);
|
if (type >= 32) {
|
||||||
|
*codepoint = 0;
|
||||||
|
} else {
|
||||||
|
*codepoint = (0xFF >> type) & static_cast<unsigned char>(c);
|
||||||
|
}
|
||||||
bool result = true;
|
bool result = true;
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 2: TAIL(); return result;
|
case 2: TAIL(); return result;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user