MFV r339750:
Sync libarchive with vendor. Relevant vendor changes: RAR5 reader: FreeBSD build platform fixes for powerpc(64), mips(64), sparc64 and riscv64 MFC after: 1 month
This commit is contained in:
parent
8d4afb836e
commit
9b1e8e87ea
@ -737,11 +737,11 @@ static void dist_cache_push(struct rar5* rar, int value) {
|
|||||||
q[0] = value;
|
q[0] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dist_cache_touch(struct rar5* rar, int index) {
|
static int dist_cache_touch(struct rar5* rar, int idx) {
|
||||||
int* q = rar->cstate.dist_cache;
|
int* q = rar->cstate.dist_cache;
|
||||||
int i, dist = q[index];
|
int i, dist = q[idx];
|
||||||
|
|
||||||
for(i = index; i > 0; i--)
|
for(i = idx; i > 0; i--)
|
||||||
q[i] = q[i - 1];
|
q[i] = q[i - 1];
|
||||||
|
|
||||||
q[0] = dist;
|
q[0] = dist;
|
||||||
@ -1500,10 +1500,10 @@ static int process_head_main(struct archive_read* a, struct rar5* rar,
|
|||||||
(void) entry;
|
(void) entry;
|
||||||
|
|
||||||
int ret;
|
int ret;
|
||||||
size_t extra_data_size,
|
size_t extra_data_size = 0;
|
||||||
extra_field_size,
|
size_t extra_field_size = 0;
|
||||||
extra_field_id,
|
size_t extra_field_id = 0;
|
||||||
archive_flags;
|
size_t archive_flags = 0;
|
||||||
|
|
||||||
if(block_flags & HFL_EXTRA_DATA) {
|
if(block_flags & HFL_EXTRA_DATA) {
|
||||||
if(!read_var_sized(a, &extra_data_size, NULL))
|
if(!read_var_sized(a, &extra_data_size, NULL))
|
||||||
@ -1528,7 +1528,7 @@ static int process_head_main(struct archive_read* a, struct rar5* rar,
|
|||||||
rar->main.solid = (archive_flags & SOLID) > 0;
|
rar->main.solid = (archive_flags & SOLID) > 0;
|
||||||
|
|
||||||
if(archive_flags & VOLUME_NUMBER) {
|
if(archive_flags & VOLUME_NUMBER) {
|
||||||
size_t v;
|
size_t v = 0;
|
||||||
if(!read_var_sized(a, &v, NULL)) {
|
if(!read_var_sized(a, &v, NULL)) {
|
||||||
return ARCHIVE_EOF;
|
return ARCHIVE_EOF;
|
||||||
}
|
}
|
||||||
@ -1644,7 +1644,8 @@ static int process_base_block(struct archive_read* a,
|
|||||||
struct rar5* rar = get_context(a);
|
struct rar5* rar = get_context(a);
|
||||||
uint32_t hdr_crc, computed_crc;
|
uint32_t hdr_crc, computed_crc;
|
||||||
size_t raw_hdr_size, hdr_size_len, hdr_size;
|
size_t raw_hdr_size, hdr_size_len, hdr_size;
|
||||||
size_t header_id, header_flags;
|
size_t header_id = 0;
|
||||||
|
size_t header_flags = 0;
|
||||||
const uint8_t* p;
|
const uint8_t* p;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -2529,8 +2530,8 @@ static int do_uncompress_block(struct archive_read* a, const uint8_t* p) {
|
|||||||
|
|
||||||
continue;
|
continue;
|
||||||
} else if(num < 262) {
|
} else if(num < 262) {
|
||||||
const int index = num - 258;
|
const int idx = num - 258;
|
||||||
const int dist = dist_cache_touch(rar, index);
|
const int dist = dist_cache_touch(rar, idx);
|
||||||
|
|
||||||
uint16_t len_slot;
|
uint16_t len_slot;
|
||||||
int len;
|
int len;
|
||||||
|
Loading…
Reference in New Issue
Block a user