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 suprised me a bit. Given that the former do not produce a compiler warning about undefined behaviour, and assuming that the value generated by GCC is the desired one, I provide this change to get rid of the indefined 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
Loading
Please register or sign in to comment