X-Git-Url: https://git.sesse.net/?p=fjl;a=blobdiff_plain;f=bitsource.c;h=b1593aa6ec554959b4bba6bbe3aceb75d4e04863;hp=7a4ea4a0ca3c553e276be095932061313e833441;hb=bed2510078b46c35b95941e59327b1008e4bd176;hpb=9069ae93f3e9e9b44f5f28968f508d09f0711737 diff --git a/bitsource.c b/bitsource.c index 7a4ea4a..b1593aa 100644 --- a/bitsource.c +++ b/bitsource.c @@ -45,17 +45,20 @@ void possibly_refill_slow_path(struct bit_source* source, unsigned num_bits) fprintf(stderr, "Input function returned error\n"); exit(1); } - if (bytes_read == 0 && source->padding_bytes_available > 0) { - unsigned padding_to_add = source->padding_bytes_available; - if (padding_to_add > bytes_to_read) { - padding_to_add = bytes_to_read; + if (bytes_read == 0) { + source->source_eof = true; + if (source->padding_bytes_available > 0) { + unsigned padding_to_add = source->padding_bytes_available; + if (padding_to_add > bytes_to_read) { + padding_to_add = bytes_to_read; + } + memset(source->bytes + source->bytes_available, 0, padding_to_add); + source->padding_bytes_available -= padding_to_add; + source->bytes_available += padding_to_add; + } else { + fprintf(stderr, "Premature EOF\n"); + exit(1); } - memset(source->bytes + source->bytes_available, 0, padding_to_add); - source->padding_bytes_available -= padding_to_add; - source->bytes_available += padding_to_add; - } else if (bytes_read == 0) { - fprintf(stderr, "Premature EOF\n"); - exit(1); } else { source->bytes_available += bytes_read; }