+ while (length) {
+ crc = (crc << 8) ^ crc32_table[(uint8_t)(crc >> 24) ^ (uint8_t)length];
+ /* must ensure that shift is unsigned! */
+ if (sizeof(length) <= sizeof(unsigned))
+ length = (unsigned)length >> 8;
+ else if (sizeof(length) <= sizeof(unsigned long))
+ length = (unsigned long)length >> 8;
+ else
+ length = (unsigned long long)length >> 8;
+ }
+ crc = ~crc;