diff -urNp cpio-2.10-orig/src/copyin.c cpio-2.10/src/copyin.c --- cpio-2.10-orig/src/copyin.c 2010-02-22 12:57:59.000000000 +0100 +++ cpio-2.10/src/copyin.c 2010-02-22 12:55:26.000000000 +0100 @@ -944,20 +944,23 @@ read_pattern_file () pattern_fp = fopen (pattern_file_name, "r"); if (pattern_fp == NULL) open_error (pattern_file_name); - while (ds_fgetstr (pattern_fp, &pattern_name, '\n') != NULL) - { - if (new_num_patterns >= max_new_patterns) - { - max_new_patterns += 1; - new_save_patterns = (char **) - xrealloc ((char *) new_save_patterns, - max_new_patterns * sizeof (char *)); - } - new_save_patterns[new_num_patterns] = xstrdup (pattern_name.ds_string); - ++new_num_patterns; - } - if (ferror (pattern_fp) || fclose (pattern_fp) == EOF) - close_error (pattern_file_name); + else + { + while (ds_fgetstr (pattern_fp, &pattern_name, '\n') != NULL) + { + if (new_num_patterns >= max_new_patterns) + { + max_new_patterns += 1; + new_save_patterns = (char **) + xrealloc ((char *) new_save_patterns, + max_new_patterns * sizeof (char *)); + } + new_save_patterns[new_num_patterns] = xstrdup (pattern_name.ds_string); + ++new_num_patterns; + } + if (ferror (pattern_fp) || fclose (pattern_fp) == EOF) + close_error (pattern_file_name); + } for (i = 0; i < num_patterns; ++i) new_save_patterns[i] = save_patterns[i];