Please, can you keep your commit messages to the point? "Fix unportable left shift"
is probably a good enough summary. You don't have to paste the test suite results and the actual diffs in free form as well. On Tue, Jun 12, 2018 at 00:42:17 +0000, Kamil Rytarowski wrote: > Log Message: > Correct Undefined Behavior in gzip(1) > > Unportable left shift reported with MKSANITIZER=yes USE_SANITIZER=undefined: > > # progress -zf ./games.tgz tar -xp -C "./" -f - > /public/src.git/usr.bin/gzip/gzip.c:2126:33: runtime error: left shift of 251 > by 24 places cannot be represented in type 'int' > 100% > |****************************************************************************************************************| > 44500 KiB 119.69 MiB/s 00:00 ETA > > Refactor the following code into something that is more clear > and fix signed integer shift, by casting all buf[] elements to > (unsigned int): > > unsigned char buf[8]; > uint32_t usize; > [...] > else { > usize = buf[4] | buf[5] << 8 | > buf[6] << 16 | buf[7] << 24; > [...] > > New version: > > usize = buf[4]; > usize |= (unsigned int)buf[5] << 8; > usize |= (unsigned int)buf[6] << 16; > usize |= (unsigned int)buf[7] << 24; > > Only the "<< 24" part needs explicit cast, but for consistency make the > integer promotion explicit and clear to a code reader. > > Sponsored by <The NetBSD Foundation> -uwe