mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2025-11-13 11:58:26 -06:00
Windows: Update libzip to version 1.5.2
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
zip_close.c -- close zip archive and update changes
|
||||
Copyright (C) 1999-2017 Dieter Baron and Thomas Klausner
|
||||
Copyright (C) 1999-2018 Dieter Baron and Thomas Klausner
|
||||
|
||||
This file is part of libzip, a library to manipulate ZIP archives.
|
||||
The authors can be contacted at <libzip@nih.at>
|
||||
@@ -520,17 +520,24 @@ add_data(zip_t *za, zip_source_t *src, zip_dirent_t *de) {
|
||||
|
||||
static int
|
||||
copy_data(zip_t *za, zip_uint64_t len) {
|
||||
zip_uint8_t buf[BUFSIZE];
|
||||
DEFINE_BYTE_ARRAY(buf, BUFSIZE);
|
||||
size_t n;
|
||||
double total = (double)len;
|
||||
|
||||
if (!byte_array_init(buf, BUFSIZE)) {
|
||||
zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
while (len > 0) {
|
||||
n = len > sizeof(buf) ? sizeof(buf) : len;
|
||||
n = len > BUFSIZE ? BUFSIZE : len;
|
||||
if (_zip_read(za->src, buf, n, &za->error) < 0) {
|
||||
byte_array_fini(buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (_zip_write(za, buf, n) < 0) {
|
||||
byte_array_fini(buf);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -539,13 +546,14 @@ copy_data(zip_t *za, zip_uint64_t len) {
|
||||
_zip_progress_update(za->progress, (total - (double)len) / total);
|
||||
}
|
||||
|
||||
byte_array_fini(buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
copy_source(zip_t *za, zip_source_t *src, zip_int64_t data_length) {
|
||||
zip_uint8_t buf[BUFSIZE];
|
||||
DEFINE_BYTE_ARRAY(buf, BUFSIZE);
|
||||
zip_int64_t n, current;
|
||||
int ret;
|
||||
|
||||
@@ -554,14 +562,19 @@ copy_source(zip_t *za, zip_source_t *src, zip_int64_t data_length) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!byte_array_init(buf, BUFSIZE)) {
|
||||
zip_error_set(&za->error, ZIP_ER_MEMORY, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
current = 0;
|
||||
while ((n = zip_source_read(src, buf, sizeof(buf))) > 0) {
|
||||
while ((n = zip_source_read(src, buf, BUFSIZE)) > 0) {
|
||||
if (_zip_write(za, buf, (zip_uint64_t)n) < 0) {
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
if (n == sizeof(buf) && za->progress && data_length > 0) {
|
||||
if (n == BUFSIZE && za->progress && data_length > 0) {
|
||||
current += n;
|
||||
_zip_progress_update(za->progress, (double)current / (double)data_length);
|
||||
}
|
||||
@@ -572,6 +585,8 @@ copy_source(zip_t *za, zip_source_t *src, zip_int64_t data_length) {
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
byte_array_fini(buf);
|
||||
|
||||
zip_source_close(src);
|
||||
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user