src/windows/classes/java/lang/ProcessEnvironment.java
Print this page
*** 141,151 ****
return new CheckedEntry(i.next());
}
public void remove() { i.remove();}
};
}
! private static Map.Entry<String,String> checkedEntry (Object o) {
Map.Entry<String,String> e = (Map.Entry<String,String>) o;
nonNullString(e.getKey());
nonNullString(e.getValue());
return e;
}
--- 141,151 ----
return new CheckedEntry(i.next());
}
public void remove() { i.remove();}
};
}
! private static Map.Entry<String,String> checkedEntry(Object o) {
Map.Entry<String,String> e = (Map.Entry<String,String>) o;
nonNullString(e.getKey());
nonNullString(e.getValue());
return e;
}
*** 297,319 ****
// Sort Unicode-case-insensitively by name
List<Map.Entry<String,String>> list = new ArrayList<>(entrySet());
Collections.sort(list, entryComparator);
StringBuilder sb = new StringBuilder(size()*30);
! for (Map.Entry<String,String> e : list)
! sb.append(e.getKey())
.append('=')
! .append(e.getValue())
.append('\u0000');
// Ensure double NUL termination,
// even if environment is empty.
if (sb.length() == 0)
sb.append('\u0000');
sb.append('\u0000');
return sb.toString();
}
static String toEnvironmentBlock(Map<String,String> map) {
return map == null ? null :
((ProcessEnvironment)map).toEnvironmentBlock();
}
}
--- 297,349 ----
// Sort Unicode-case-insensitively by name
List<Map.Entry<String,String>> list = new ArrayList<>(entrySet());
Collections.sort(list, entryComparator);
StringBuilder sb = new StringBuilder(size()*30);
! boolean foundSysRoot = false;
! for (Map.Entry<String,String> e : list) {
! String key = e.getKey();
! String val = e.getValue();
! if (!foundSysRoot) {
! int cmp = key.compareToIgnoreCase("systemroot");
! if (cmp == 0) {
! foundSysRoot = true;
! } else if (cmp > 0) {
! // SystemRoot not set, so add it here
! // must use lowercase name, to preserve sort position
! addEnv(sb, "systemroot");
! foundSysRoot = true;
! }
! }
! sb.append(key)
.append('=')
! .append(val)
.append('\u0000');
+ }
+ if (!foundSysRoot) {
+ // must use lowercase name, to preserve sort position
+ addEnv(sb, "systemroot");
+ }
// Ensure double NUL termination,
// even if environment is empty.
if (sb.length() == 0)
sb.append('\u0000');
sb.append('\u0000');
return sb.toString();
}
+ // add the environment variable to the child, if it exists in parent
+ private static void addEnv(StringBuilder sb, String envName) {
+ String s = getenv(envName);
+ if (s != null) {
+ sb.append(envName)
+ .append("=")
+ .append(s)
+ .append('\u0000');
+ }
+ }
+
static String toEnvironmentBlock(Map<String,String> map) {
return map == null ? null :
((ProcessEnvironment)map).toEnvironmentBlock();
}
}