Преглед на файлове

glob: fix wrong return code when aborting before any matches

when the result count was zero, glob was ignoring a possible
GLOB_ABORTED error code and returning GLOB_NOMATCH. whether this
happened could be nondeterministic and dependent on the order of
dirent enumeration, in cases where multiple matches were present and
only some produced errors.

caught by Tor's test_util_glob.
Rich Felker преди 1 година
родител
ревизия
79bdacff83
променени са 1 файла, в които са добавени 1 реда и са изтрити 1 реда
  1. 1 1
      src/regex/glob.c

+ 1 - 1
src/regex/glob.c

@@ -265,7 +265,7 @@ int glob(const char *restrict pat, int flags, int (*errfunc)(const char *path, i
 			if (append(&tail, pat, strlen(pat), 0))
 				return GLOB_NOSPACE;
 			cnt++;
-		} else
+		} else if (!error)
 			return GLOB_NOMATCH;
 	}