avoid undefined behavior signed int overflow

This commit is contained in:
Trim21 2024-12-25 05:03:47 +08:00
parent db3e2379b9
commit 28cdde503b
No known key found for this signature in database
GPG Key ID: 809F01CFB0A797FB

View File

@ -80,13 +80,13 @@ static void pkl__emit_int(PickleObject* buf, py_i64 val) {
pkl__emit_op(buf, PKL_INT_0 + val);
return;
}
if((int8_t)val == val) {
if(INT8_MIN <= val && val <= INT8_MAX) {
pkl__emit_op(buf, PKL_INT8);
PickleObject__write_bytes(buf, &val, 1);
} else if((int16_t)val == val) {
} else if(INT16_MIN <= val && val <= INT16_MAX) {
pkl__emit_op(buf, PKL_INT16);
PickleObject__write_bytes(buf, &val, 2);
} else if((int32_t)val == val) {
} else if(INT32_MIN <= val && val <= INT32_MAX) {
pkl__emit_op(buf, PKL_INT32);
PickleObject__write_bytes(buf, &val, 4);
} else {