Pacify --enable-gcc-warnings -flto -fanalyzer
With GCC 10.2.1, ‘./configure --enable-gcc-warnings CFLAGS='-O2 -flto -fanalyzer' issued a false alarm about uninitialized variable use. Pacify GCC by using a variant of the code. * src/buffer.c (zip_program): Omit last placeholder entry. (n_zip_programs): New constant. (find_zip_program): Use it instead of placeholder. (first_decompress_program): Set *PSTATE to maximum value if skipping the table. This avoids confusing gcc -flto into thinking *PSTATE is used uninitialized. (next_decompress_program): Simplify now that *PSTATE is maximal when skipping.
This commit is contained in:
@@ -328,15 +328,15 @@ static struct zip_program zip_program[] = {
|
||||
{ ct_lzop, LZOP_PROGRAM, "--lzop" },
|
||||
{ ct_xz, XZ_PROGRAM, "-J" },
|
||||
{ ct_zstd, ZSTD_PROGRAM, "--zstd" },
|
||||
{ ct_none }
|
||||
};
|
||||
enum { n_zip_programs = sizeof zip_program / sizeof *zip_program };
|
||||
|
||||
static struct zip_program const *
|
||||
find_zip_program (enum compress_type type, int *pstate)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = *pstate; zip_program[i].type != ct_none; i++)
|
||||
for (i = *pstate; i < n_zip_programs; i++)
|
||||
{
|
||||
if (zip_program[i].type == type)
|
||||
{
|
||||
@@ -353,6 +353,8 @@ first_decompress_program (int *pstate)
|
||||
{
|
||||
struct zip_program const *zp;
|
||||
|
||||
*pstate = n_zip_programs;
|
||||
|
||||
if (use_compress_program_option)
|
||||
return use_compress_program_option;
|
||||
|
||||
@@ -369,8 +371,6 @@ next_decompress_program (int *pstate)
|
||||
{
|
||||
struct zip_program const *zp;
|
||||
|
||||
if (use_compress_program_option)
|
||||
return NULL;
|
||||
zp = find_zip_program (archive_compression_type, pstate);
|
||||
return zp ? zp->program : NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user