From 58ddc179d494fd426aca184a1a5749d9fa6f81b9 Mon Sep 17 00:00:00 2001 From: Matthias Klose Date: Wed, 22 Oct 2008 18:19:29 +0000 Subject: Import GNU Classpath (libgcj-import-20081021). 2008-10-22 Matthias Klose Import GNU Classpath (libgcj-import-20081021). * Regenerate class and header files. * Regenerate auto* files. From-SVN: r141302 --- libjava/classpath/java/lang/System.java | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'libjava/classpath/java/lang/System.java') diff --git a/libjava/classpath/java/lang/System.java b/libjava/classpath/java/lang/System.java index 9fd6bfe12cd..58b1bbad3d1 100644 --- a/libjava/classpath/java/lang/System.java +++ b/libjava/classpath/java/lang/System.java @@ -546,20 +546,28 @@ public final class System SecurityManager sm = SecurityManager.current; // Be thread-safe. if (sm != null) sm.checkPermission(new RuntimePermission("getenv.*")); + if (environmentMap == null) { - List environ = (List)VMSystem.environ(); Map variables = new EnvironmentMap(); - for (String pair : environ) - { - String[] parts = pair.split("="); - if (parts.length == 2) - variables.put(parts[0], parts[1]); - else - variables.put(parts[0], ""); - } - environmentMap = Collections.unmodifiableMap(variables); + List environ = (List)VMSystem.environ(); + for (String envEntry : environ) + { + // avoid broken and null entries + if (envEntry != null && !envEntry.endsWith("=")) + { + // it's perfectly legal that some entries may be in the form + // key=value=value=value + int equalSignIndex = envEntry.indexOf('='); + String key = envEntry.substring(0, equalSignIndex); + String value = envEntry.substring(equalSignIndex + 1); + variables.put(key, value); + } + } + + environmentMap = Collections.unmodifiableMap(variables); } + return environmentMap; } -- cgit v1.2.3