diff options
Diffstat (limited to 'tarWrite.c')
-rw-r--r-- | tarWrite.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/tarWrite.c b/tarWrite.c index f5af4491b..7d46014bd 100644 --- a/tarWrite.c +++ b/tarWrite.c @@ -29,11 +29,13 @@ int flush = 0, eot_count = -1; unsigned char *write_buffer; unsigned buffer_size = 4096; unsigned buffer_loc = 0; +int buffer_status = 0; void reinit_libtar_buffer(void) { flush = 0; eot_count = -1; buffer_loc = 0; + buffer_status = 1; } void init_libtar_buffer(unsigned new_buff_size) { @@ -45,7 +47,9 @@ void init_libtar_buffer(unsigned new_buff_size) { } void free_libtar_buffer(void) { - free(write_buffer); + if (buffer_status > 0) + free(write_buffer); + buffer_status = 0; } ssize_t write_libtar_buffer(int fd, const void *buffer, size_t size) { @@ -89,4 +93,5 @@ ssize_t write_libtar_buffer(int fd, const void *buffer, size_t size) { void flush_libtar_buffer(int fd) { eot_count = 0; + buffer_status = 2; } |