From: Denys Vlasenko Date: Sat, 26 Jun 2010 16:22:41 +0000 (+0200) Subject: tar: make typical extraction less memory-hungry X-Git-Tag: 1_17_0~30 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b768aeb;p=oweals%2Fbusybox.git tar: make typical extraction less memory-hungry Signed-off-by: Denys Vlasenko --- diff --git a/archival/libunarchive/get_header_tar.c b/archival/libunarchive/get_header_tar.c index 01c10433e..21bbc9715 100644 --- a/archival/libunarchive/get_header_tar.c +++ b/archival/libunarchive/get_header_tar.c @@ -436,9 +436,11 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle) /* (like GNU tar 1.15.1: verbose mode outputs "dir/dir/") */ if (cp) *cp = '\0'; - //archive_handle->ah_flags |= ARCHIVE_EXTRACT_QUIET; // why?? archive_handle->action_data(archive_handle); - llist_add_to(&(archive_handle->passed), file_header->name); + if (archive_handle->accept || archive_handle->reject) + llist_add_to(&archive_handle->passed, file_header->name); + else /* Caller isn't interested in list of unpacked files */ + free(file_header->name); } else { data_skip(archive_handle); free(file_header->name); @@ -446,7 +448,8 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle) archive_handle->offset += file_header->size; free(file_header->link_target); - /* Do not free(file_header->name)! (why?) */ + /* Do not free(file_header->name)! + * It might be inserted in archive_handle->passed - see above */ #if ENABLE_FEATURE_TAR_UNAME_GNAME free(file_header->tar__uname); free(file_header->tar__gname);