Kaydet (Commit) 89f676f3 authored tarafından Benjamin Peterson's avatar Benjamin Peterson

promote some shifts to unsigned, so as not to invoke undefined behavior

üst 93d1a705
...@@ -2308,7 +2308,7 @@ PyUnicode_DecodeUTF32Stateful(const char *s, ...@@ -2308,7 +2308,7 @@ PyUnicode_DecodeUTF32Stateful(const char *s,
stream as-is (giving a ZWNBSP character). */ stream as-is (giving a ZWNBSP character). */
if (bo == 0) { if (bo == 0) {
if (size >= 4) { if (size >= 4) {
const Py_UCS4 bom = (q[iorder[3]] << 24) | (q[iorder[2]] << 16) | const Py_UCS4 bom = ((unsigned int)q[iorder[3]] << 24) | (q[iorder[2]] << 16) |
(q[iorder[1]] << 8) | q[iorder[0]]; (q[iorder[1]] << 8) | q[iorder[0]];
#ifdef BYTEORDER_IS_LITTLE_ENDIAN #ifdef BYTEORDER_IS_LITTLE_ENDIAN
if (bom == 0x0000FEFF) { if (bom == 0x0000FEFF) {
...@@ -2378,7 +2378,7 @@ PyUnicode_DecodeUTF32Stateful(const char *s, ...@@ -2378,7 +2378,7 @@ PyUnicode_DecodeUTF32Stateful(const char *s,
/* The remaining input chars are ignored if the callback /* The remaining input chars are ignored if the callback
chooses to skip the input */ chooses to skip the input */
} }
ch = (q[iorder[3]] << 24) | (q[iorder[2]] << 16) | ch = ((unsigned int)q[iorder[3]] << 24) | (q[iorder[2]] << 16) |
(q[iorder[1]] << 8) | q[iorder[0]]; (q[iorder[1]] << 8) | q[iorder[0]];
if (ch >= 0x110000) if (ch >= 0x110000)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment