+2004-09-26 Mark Wielaard <mark@klomp.org>
+
+ * java/lang/System.java (properties): Make package private.
+ * java/lang/Throwable.java (StaticData.nl): Initialize through
+ directly accessing System.properties.getProperty().
+
+ * java/lang/Throwable.java (nl): Remove static field.
+ (StaticData): New private static inner class.
+ (stackTraceStringBuffer): Use StaticData.nl.
+
2004-09-26 Casey Marshall <csm@gnu.org>
* java/security/ProtectionDomain.java
*/
// Note that we use clone here and not new. Some programs assume
// that the system properties do not have a parent.
- private static Properties properties
+ static Properties properties
= (Properties) Runtime.defaultProperties.clone();
/**
/* java.lang.Throwable -- Root class for all Exceptions and Errors
- Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc.
This file is part of GNU Classpath.
pw.print(stackTraceString());
}
- private static final String nl = System.getProperty("line.separator");
+ /*
+ * We use inner class to avoid a static initializer in this basic class.
+ */
+ private static class StaticData
+ {
+
+ final static String nl;
+
+ static
+ {
+ // Access package private properties field to prevent Security check.
+ nl = System.properties.getProperty("line.separator");
+ }
+ }
+
// Create whole stack trace in a stringbuffer so we don't have to print
// it line by line. This prevents printing multiple stack traces from
// different threads to get mixed up when written to the same PrintWriter.
private static void stackTraceStringBuffer(StringBuffer sb, String name,
StackTraceElement[] stack, int equal)
{
+ String nl = StaticData.nl;
// (finish) first line
sb.append(name);
sb.append(nl);