diff --git a/eebie/writer.c b/eebie/writer.c index 092b4ae..3cdd86d 100644 --- a/eebie/writer.c +++ b/eebie/writer.c @@ -32,7 +32,8 @@ static int bit_length(uint64_t i) { } static uint64_t encode_int(uint64_t i) { - return i | VARINT_MASKS[(bit_length(i) + 6) / 7]; + // bit_length(i + 1) over bit_length(i) because 0xFF... lengths are interpreted as indefinite + return i | VARINT_MASKS[(bit_length(i + 1) + 6) / 7]; } static void advance(EBMLWriter *this, uint64_t amount) {