CVariableInt::Unpack
is changed from
cpp
*pInOut |= (*pSrc&(0x7F))<<(6+7+7+7);
to
cpp
*pInOut |= (*pSrc & 0x0F) << (6 + 7 + 7 + 7);
which means the last iteration will unpack at most 4 more bits instead of 7, hence invalid left shifts by 27 places that could otherwise occur on this line are prevented (see https://github.com/ddnet/ddnet/issues/4280 and https://github.com/ddnet/ddnet/issues/3686). Now at most 31 bits are unpacked, in addition to...