From: Michihiro NAKAJIMA Date: Wed, 27 Jul 2011 07:18:32 +0000 (-0400) Subject: Fix build failure on Ubuntu (with gcc 4.5.2). X-Git-Tag: v3.0.0a~225 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=679b7d3a17410b08963c2cdb8d99779dbde30d05;p=thirdparty%2Flibarchive.git Fix build failure on Ubuntu (with gcc 4.5.2). SVN-Revision: 3506 --- diff --git a/libarchive/archive_read_support_format_rar.c b/libarchive/archive_read_support_format_rar.c index b0356a728..b555c83a2 100644 --- a/libarchive/archive_read_support_format_rar.c +++ b/libarchive/archive_read_support_format_rar.c @@ -573,12 +573,11 @@ read_header(struct archive_read *a, struct archive_entry *entry, struct rar_header rar_header; struct rar_file_header file_header; int64_t header_size; - unsigned filename_size, offset, end; + unsigned filename_size, end; char *filename; char *strp; char packed_size[8]; char unp_size[8]; - unsigned char highbyte, flagbyte, flagbits, length; int time; struct archive_string_conv *sconv; int ret = (ARCHIVE_OK), ret2; @@ -678,8 +677,12 @@ read_header(struct archive_read *a, struct archive_entry *entry, filename[filename_size] = '\0'; if (rar->file_flags & FHD_UNICODE) { + unsigned offset; + if (filename_size != strlen(filename)) { + unsigned char highbyte, flagbits, flagbyte, length; + end = filename_size; filename_size = 0; offset = strlen(filename) + 1; @@ -691,7 +694,9 @@ read_header(struct archive_read *a, struct archive_entry *entry, { flagbyte = *(p + offset++); flagbits = 8; - } + } else + flagbyte = 0; + flagbits -= 2; switch((flagbyte >> flagbits) & 3) { @@ -722,7 +727,9 @@ read_header(struct archive_read *a, struct archive_entry *entry, } filename[filename_size++] = '\0'; filename[filename_size++] = '\0'; - } + } else + offset = 0; + sconv = archive_string_conversion_from_charset(&a->archive, "UTF-16BE", 1); if (sconv == NULL) {