Browse Source
The high-order byte is promoted to 'int'. If the high-order bit is set,
this results in an overflow (into the sign bit) when shifted by 24 bits
to the left. This was flagged by the UB sanitiser. To fix that, promote
all bytes to 32-bit unsigned first, to perform overflow-proof unsigned
arithmetic.
Then to avoid aliasing errors, make sure the output is written as signed
32-bit values, since the decoder outputs S32N.
(cherry picked from commit 9260acab6a)
cherry-pick-c5513cf9
1 changed files with 23 additions and 11 deletions
Loading…
Reference in new issue