Răsfoiți Sursa

fix locale environment variable logic for empty strings

per POSIX (XBD 8.2) LC_*/LANG environment variables set to to the
empty string are supposed to be treated as if they were not set at
all.
Rich Felker 10 ani în urmă
părinte
comite
674e28af2d
1 a modificat fișierele cu 3 adăugiri și 3 ștergeri
  1. 3 3
      src/locale/__setlocalecat.c

+ 3 - 3
src/locale/__setlocalecat.c

@@ -16,9 +16,9 @@ static const char envvars[][12] = {
 int __setlocalecat(locale_t loc, int cat, const char *val)
 {
 	if (!*val) {
-		(val = getenv("LC_ALL")) ||
-		(val = getenv(envvars[cat])) ||
-		(val = getenv("LANG")) ||
+		(val = getenv("LC_ALL")) && *val ||
+		(val = getenv(envvars[cat])) && *val ||
+		(val = getenv("LANG")) && *val ||
 		(val = "C.UTF-8");
 	}