The shift by 24 bits has to be casted as well, otherwise we
shift into the sign bit which causes undefined behaviour.
See https://bugzilla.gnome.org/show_bug.cgi?id=698520
{
orc_uint32 value;
value = orc_bytecode_parse_get_byte (parse);
- value |= orc_bytecode_parse_get_byte (parse) << 8;
- value |= orc_bytecode_parse_get_byte (parse) << 16;
- value |= orc_bytecode_parse_get_byte (parse) << 24;
+ value |= ((orc_uint32)orc_bytecode_parse_get_byte (parse)) << 8;
+ value |= ((orc_uint32)orc_bytecode_parse_get_byte (parse)) << 16;
+ value |= ((orc_uint32)orc_bytecode_parse_get_byte (parse)) << 24;
return value;
}