--- Convert-BER-XS/XS.xs 2019/04/22 11:01:49 1.27 +++ Convert-BER-XS/XS.xs 2019/04/23 17:55:54 1.28 @@ -678,14 +678,14 @@ U8 *lenb = cur++; #if UVSIZE > 4 - *cur = val >> 56; cur += *cur > 0; - *cur = val >> 48; cur += *cur > 0; - *cur = val >> 40; cur += *cur > 0; - *cur = val >> 32; cur += *cur > 0; + *cur = val >> 56; cur += val >= ((UV)1 << (8 * 7)); + *cur = val >> 48; cur += val >= ((UV)1 << (8 * 6)); + *cur = val >> 40; cur += val >= ((UV)1 << (8 * 5)); + *cur = val >> 32; cur += val >= ((UV)1 << (8 * 4)); #endif - *cur = val >> 24; cur += *cur > 0; - *cur = val >> 16; cur += *cur > 0; - *cur = val >> 8; cur += *cur > 0; + *cur = val >> 24; cur += val >= ((UV)1 << (8 * 3)); + *cur = val >> 16; cur += val >= ((UV)1 << (8 * 2)); + *cur = val >> 8; cur += val >= ((UV)1 << (8 * 1)); *cur = val ; cur += 1; *lenb = 0x80 + cur - lenb - 1;