Browse Source

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 years ago
parent
commit
674e28af2d
1 changed files with 3 additions and 3 deletions
  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");
 	}