Clear tmpinbuf between chunks.

This commit is contained in:
Con Kolivas 2011-03-14 22:03:13 +11:00
parent 3a8c0b6689
commit 8a83741c32
3 changed files with 10 additions and 0 deletions

View file

@ -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;

View file

@ -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

View file

@ -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);