aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog9
-rw-r--r--libjava/java/lang/reflect/Proxy.java2
-rw-r--r--libjava/java/net/URL.java6
-rw-r--r--libjava/java/security/SecureRandom.java4
-rw-r--r--libjava/java/util/Timer.java6
-rw-r--r--libjava/java/util/prefs/AbstractPreferences.java2
6 files changed, 27 insertions, 2 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 5c99a78..ac99d3b 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,12 @@
+2005-02-22 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/lang/reflect/Proxy.java,
+ java/net/URL.java,
+ java/security/SecureRandom.java,
+ java/util/Timer.java,
+ java/util/prefs/AbstractPreferences.java:
+ Don't catch java.lang.ThreadDeath.
+
2005-02-22 David Gilbert <david.gilbert@object-refinery.com>
* java/awt/font/TransformAttribute.java,
diff --git a/libjava/java/lang/reflect/Proxy.java b/libjava/java/lang/reflect/Proxy.java
index dc65fca..3f13254 100644
--- a/libjava/java/lang/reflect/Proxy.java
+++ b/libjava/java/lang/reflect/Proxy.java
@@ -1347,7 +1347,7 @@ public class Proxy implements Serializable
return clazz;
}
- catch (Throwable e)
+ catch (Exception e)
{
// assert false;
throw (Error) new InternalError("Unexpected: " + e).initCause(e);
diff --git a/libjava/java/net/URL.java b/libjava/java/net/URL.java
index 96f9799..7ab3051 100644
--- a/libjava/java/net/URL.java
+++ b/libjava/java/net/URL.java
@@ -1,5 +1,5 @@
/* URL.java -- Uniform Resource Locator Class
- Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004
+ Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -918,6 +918,10 @@ public final class URL implements Serializable
Class c = Class.forName(clsName, true, systemClassLoader);
ph = (URLStreamHandler) c.newInstance();
}
+ catch (ThreadDeath death)
+ {
+ throw death;
+ }
catch (Throwable t) { /* ignored */ }
}
while (ph == null && pkgPrefix.hasMoreTokens());
diff --git a/libjava/java/security/SecureRandom.java b/libjava/java/security/SecureRandom.java
index 5ae1fa2..43841b2 100644
--- a/libjava/java/security/SecureRandom.java
+++ b/libjava/java/security/SecureRandom.java
@@ -112,6 +112,10 @@ public class SecureRandom extends Random
provider = p[i];
return;
}
+ catch (ThreadDeath death)
+ {
+ throw death;
+ }
catch (Throwable t)
{
// Ignore.
diff --git a/libjava/java/util/Timer.java b/libjava/java/util/Timer.java
index e4eb246..3c7223b 100644
--- a/libjava/java/util/Timer.java
+++ b/libjava/java/util/Timer.java
@@ -343,6 +343,12 @@ public class Timer
{
task.run();
}
+ catch (ThreadDeath death)
+ {
+ // If an exception escapes, the Timer becomes invalid.
+ queue.stop();
+ throw death;
+ }
catch (Throwable t)
{
/* ignore all errors */
diff --git a/libjava/java/util/prefs/AbstractPreferences.java b/libjava/java/util/prefs/AbstractPreferences.java
index 69f4426..159a887 100644
--- a/libjava/java/util/prefs/AbstractPreferences.java
+++ b/libjava/java/util/prefs/AbstractPreferences.java
@@ -550,6 +550,8 @@ public abstract class AbstractPreferences extends Preferences {
String value;
try {
value = getSpi(key);
+ } catch (ThreadDeath death) {
+ throw death;
} catch (Throwable t) {
value = null;
}