diff options
author | Martin Matuška <martin@matuska.org> | 2022-02-05 10:02:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-05 10:02:15 +0100 |
commit | 83b3d522e131e0cf4f07131716dcac24dd0b0273 (patch) | |
tree | c82fd5c7733d0003fff9114c9f8f69f68bcdc293 /libarchive/archive_read_disk_windows.c | |
parent | 3665c7587d6561f0209da1716f86fbebb9a26778 (diff) | |
parent | 4b7558e108c17de1417fb427ce0f771049e10ec5 (diff) | |
download | libarchive-83b3d522e131e0cf4f07131716dcac24dd0b0273.tar.gz |
Merge pull request #1603 from evelikov/reader-filter-vtbl
Reader filter rework - simplification, robustness and deadcode removal
Diffstat (limited to 'libarchive/archive_read_disk_windows.c')
-rw-r--r-- | libarchive/archive_read_disk_windows.c | 26 |
1 files changed, 9 insertions, 17 deletions
diff --git a/libarchive/archive_read_disk_windows.c b/libarchive/archive_read_disk_windows.c index 7e9ea4f0..ea32e2aa 100644 --- a/libarchive/archive_read_disk_windows.c +++ b/libarchive/archive_read_disk_windows.c @@ -449,22 +449,14 @@ entry_symlink_from_pathw(struct archive_entry *entry, const wchar_t *path) return; } -static struct archive_vtable * -archive_read_disk_vtable(void) -{ - static struct archive_vtable av; - static int inited = 0; - - if (!inited) { - av.archive_free = _archive_read_free; - av.archive_close = _archive_read_close; - av.archive_read_data_block = _archive_read_data_block; - av.archive_read_next_header = _archive_read_next_header; - av.archive_read_next_header2 = _archive_read_next_header2; - inited = 1; - } - return (&av); -} +static const struct archive_vtable +archive_read_disk_vtable = { + .archive_free = _archive_read_free, + .archive_close = _archive_read_close, + .archive_read_data_block = _archive_read_data_block, + .archive_read_next_header = _archive_read_next_header, + .archive_read_next_header2 = _archive_read_next_header2, +}; const char * archive_read_disk_gname(struct archive *_a, la_int64_t gid) @@ -541,7 +533,7 @@ archive_read_disk_new(void) return (NULL); a->archive.magic = ARCHIVE_READ_DISK_MAGIC; a->archive.state = ARCHIVE_STATE_NEW; - a->archive.vtable = archive_read_disk_vtable(); + a->archive.vtable = &archive_read_disk_vtable; a->entry = archive_entry_new2(&a->archive); a->lookup_uname = trivial_lookup_uname; a->lookup_gname = trivial_lookup_gname; |