From: Sean Purcell Date: Tue, 25 Apr 2017 22:10:28 +0000 (-0700) Subject: zstd: Address comments by @terrelln X-Git-Tag: v3.3.3~44^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=49f1f707f83507cb1d8449e2391fe2ca52941ff5;p=thirdparty%2Flibarchive.git zstd: Address comments by @terrelln --- diff --git a/libarchive/archive_read_support_filter_zstd.c b/libarchive/archive_read_support_filter_zstd.c index ea12206fe..ebe1a2224 100644 --- a/libarchive/archive_read_support_filter_zstd.c +++ b/libarchive/archive_read_support_filter_zstd.c @@ -86,7 +86,7 @@ archive_read_support_filter_zstd(struct archive *_a) struct archive_read_filter_bidder *bidder; archive_check_magic(_a, ARCHIVE_READ_MAGIC, - ARCHIVE_STATE_NEW, "archive_read_support_filter_gzip"); + ARCHIVE_STATE_NEW, "archive_read_support_filter_zstd"); if (__archive_read_get_bidder(a, &bidder) != ARCHIVE_OK) return (ARCHIVE_FATAL); @@ -173,23 +173,17 @@ zstd_bidder_init(struct archive_read_filter *self) state = (struct private_data *)calloc(sizeof(*state), 1); out_block = (unsigned char *)malloc(out_block_size); - if (state == NULL || out_block == NULL) { - free(out_block); - free(state); - archive_set_error(&self->archive->archive, ENOMEM, - "Can't allocate data for zstd decompression"); - return (ARCHIVE_FATAL); - } self->data = state; state->dstream = ZSTD_createDStream(); - if (!state->dstream) { + if (state == NULL || out_block == NULL || state->dstream == NULL) { free(out_block); free(state); + ZSTD_freeDStream(state->dstream); /* supports free on NULL */ archive_set_error(&self->archive->archive, ENOMEM, - "Can't create zstd decompressor object"); + "Can't allocate data for zstd decompression"); return (ARCHIVE_FATAL); } @@ -223,8 +217,6 @@ zstd_filter_read(struct archive_read_filter *self, const void **p) if (!state->in_frame) { const size_t ret = ZSTD_initDStream(state->dstream); if (ZSTD_isError(ret)) { - free(state->out_block); - free(state); archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC, "Error initializing zstd decompressor: %s", diff --git a/libarchive/archive_write_add_filter_zstd.c b/libarchive/archive_write_add_filter_zstd.c index 2b56040a0..671fc6aff 100644 --- a/libarchive/archive_write_add_filter_zstd.c +++ b/libarchive/archive_write_add_filter_zstd.c @@ -114,7 +114,6 @@ archive_write_add_filter_zstd(struct archive *_a) archive_set_error(&a->archive, ENOMEM, "Out of memory"); return (ARCHIVE_FATAL); } - data->compression_level = 0; archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "Using external zstd program"); return (ARCHIVE_WARN); diff --git a/tar/creation_set.c b/tar/creation_set.c index d47edd766..42ce127e9 100644 --- a/tar/creation_set.c +++ b/tar/creation_set.c @@ -76,14 +76,14 @@ get_filter_code(const char *suffix) { ".lrz", "lrzip" }, { ".lz", "lzip" }, { ".lz4", "lz4" }, - { ".zstd", "zstd"}, + { ".zst", "zstd"}, { ".lzo", "lzop" }, { ".lzma", "lzma" }, { ".uu", "uuencode" }, { ".xz", "xz" }, { NULL, NULL } }; - + return get_suffix_code(filters, suffix); }