diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2022-07-24 14:39:11 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2022-07-25 09:44:00 -0700 |
commit | 49861479860247a738eac6e041d4ec2758bc1a25 (patch) | |
tree | 90f288cbf2667231ab6bfd3fd50e749a6331031e | |
parent | e5aac38c8094b320d67d352b2b99973622ac9751 (diff) | |
download | tar-49861479860247a738eac6e041d4ec2758bc1a25.tar.gz |
Work around GCC bug 106428
* src/names.c (read_next_name): Reword and clarify
to avoid GCC bug 106428.
-rw-r--r-- | src/names.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/names.c b/src/names.c index 43c70f8f..a70bf9ac 100644 --- a/src/names.c +++ b/src/names.c @@ -199,7 +199,7 @@ names_parse_opt (int key, char *arg, struct argp_state *state) case ADD_FILE_OPTION: name_add_name (arg); break; - + case ARGP_KEY_ERROR: { struct tar_args *args = state->input; @@ -217,7 +217,7 @@ names_parse_opt (int key, char *arg, struct argp_state *state) name_add_option (key, arg); else return ARGP_ERR_UNKNOWN; - + } return 0; } @@ -1028,8 +1028,10 @@ read_next_name (struct name_elt *ent, struct name_elt *ret) name_list_advance (); return 1; } - if ((ent->v.file.fp = fopen (ent->v.file.name, "r")) == NULL) + FILE *fp = fopen (ent->v.file.name, "r"); + if (!fp) open_fatal (ent->v.file.name); + ent->v.file.fp = fp; } ent->v.file.term = filename_terminator; ent->v.file.verbatim = verbatim_files_from_option; @@ -1250,13 +1252,13 @@ add_starting_file (char const *file_name) remname (head); free_name (head); } - + name->prev = NULL; name->next = namelist; namelist = name; if (!nametail) nametail = namelist; - + name->found_count = 0; name->matching_flags = INCLUDE_OPTIONS; name->change_dir = 0; |