Skip to content
Snippets Groups Projects
Commit 3a362bfa authored by Petter Reinholdtsen's avatar Petter Reinholdtsen
Browse files

Avoid undefined shifting of negative number in rate.c.

It is undefined what left-shifting a negative number should do, and the
compiler do not like trying to shift the -64 value 57 bits to the left.
Testing show that the value of both OC_Q57(64) and OC_Q57(-64) are
0x8000000000000000, which surprised me a bit.  Given that the former do
not produce a compiler warning about undefined behavior, and assuming
that the value generated by GCC is the desired one, I provide this
change to get rid of the undefined behavior.

This get rid of this clang message:

>  ../../lib/rate.c:746:15: warning: shifting a negative signed value is undefined [-Wshift-negative-value]
>      log_scale=OC_Q57(-64);
>                ^~~~~~~~~~~
>  ../../lib/mathops.h:134:38: note: expanded from macro 'OC_Q57'
>  #define OC_Q57(_v) ((ogg_int64_t)(_v)<<57)
>                      ~~~~~~~~~~~~~~~~~^

Fixes #2321
parent 877ac811
No related branches found
No related tags found
Loading
Checking pipeline status
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment