diff --git a/lrzip.c b/lrzip.c index 9fd7980..b1df6a4 100644 --- a/lrzip.c +++ b/lrzip.c @@ -449,6 +449,12 @@ static void open_tmpinbuf(rzip_control *control) fatal("Failed to malloc tmp_inbuf in open_tmpinbuf\n"); } +void clear_tmpinbuf(rzip_control *control) +{ + control->in_relofs += control->in_len; + control->in_len = control->in_ofs = 0; +} + void close_tmpinbuf(rzip_control *control) { control->flags &= ~FLAG_TMP_INBUF; diff --git a/lrzip.h b/lrzip.h index aa6c43b..a4977aa 100644 --- a/lrzip.h +++ b/lrzip.h @@ -36,4 +36,6 @@ void write_stdout_header(rzip_control *control); void write_fdout(rzip_control *control, void *buf, i64 len); void flush_tmpoutbuf(rzip_control *control); void close_tmpoutbuf(rzip_control *control); +void clear_tmpinbuf(rzip_control *control); +void close_tmpinbuf(rzip_control *control); #endif diff --git a/runzip.c b/runzip.c index 75d92c3..ea757df 100644 --- a/runzip.c +++ b/runzip.c @@ -325,6 +325,8 @@ i64 runzip_fd(rzip_control *control, int fd_in, int fd_out, int fd_hist, i64 exp flush_tmpoutbuf(control); else if (STDOUT) dump_tmpoutfile(control, fd_out); + if (TMP_INBUF) + clear_tmpinbuf(control); } while (total < expected_size || (!expected_size && !control->eof)); gettimeofday(&end,NULL);