summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Frijters <jeroen@sumatra.nl>2004-12-02 13:17:20 +0000
committerJeroen Frijters <jeroen@sumatra.nl>2004-12-02 13:17:20 +0000
commit5c62022dcd79a6da46e5d4dfe9bfa95f3afcbbb5 (patch)
tree70b6101d718407c0fdd583e2dd3ada8420457e19
parent07deb0cb592e8d4286e2e962f28a94e60d454a73 (diff)
downloadclasspath-5c62022dcd79a6da46e5d4dfe9bfa95f3afcbbb5.tar.gz
2004-12-02 Jeroen Frijters <jeroen@frijters.net>
* java/awt/EventDispatchThread.java, java/awt/Toolkit.java, java/io/ObjectStreamClass.java, java/lang/reflect/Proxy.java, java/net/URL.java, java/security/SecureRandom.java, java/util/Timer.java, java/util/prefs/AbstractPreferences.java, vm/reference/java/lang/VMProcess.java: Don't catch java.lang.ThreadDeath.
-rw-r--r--ChangeLog13
-rw-r--r--java/awt/EventDispatchThread.java5
-rw-r--r--java/awt/Toolkit.java4
-rw-r--r--java/io/ObjectStreamClass.java4
-rw-r--r--java/lang/reflect/Proxy.java2
-rw-r--r--java/net/URL.java4
-rw-r--r--java/security/SecureRandom.java4
-rw-r--r--java/util/Timer.java4
-rw-r--r--java/util/prefs/AbstractPreferences.java2
-rw-r--r--vm/reference/java/lang/VMProcess.java4
10 files changed, 43 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 0ecda9159..151fa3d6b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
2004-12-02 Jeroen Frijters <jeroen@frijters.net>
+ * java/awt/EventDispatchThread.java,
+ java/awt/Toolkit.java,
+ java/io/ObjectStreamClass.java,
+ java/lang/reflect/Proxy.java,
+ java/net/URL.java,
+ java/security/SecureRandom.java,
+ java/util/Timer.java,
+ java/util/prefs/AbstractPreferences.java,
+ vm/reference/java/lang/VMProcess.java:
+ Don't catch java.lang.ThreadDeath.
+
+2004-12-02 Jeroen Frijters <jeroen@frijters.net>
+
* gnu/java/net/protocol/file/Connection.java
(StaticData): New inner class to contain statics.
(connect, getHeaderField): Modified to use StaticData.
diff --git a/java/awt/EventDispatchThread.java b/java/awt/EventDispatchThread.java
index 0803ff675..0c908a1e1 100644
--- a/java/awt/EventDispatchThread.java
+++ b/java/awt/EventDispatchThread.java
@@ -80,6 +80,11 @@ class EventDispatchThread extends Thread
if (!manager.dispatchEvent (evt))
queue.dispatchEvent(evt);
}
+ catch (ThreadDeath death)
+ {
+ // If someone wants to kill us, let them.
+ return;
+ }
catch (InterruptedException ie)
{
// We are interrupted when we should finish executing
diff --git a/java/awt/Toolkit.java b/java/awt/Toolkit.java
index 504572a2d..f1925a28c 100644
--- a/java/awt/Toolkit.java
+++ b/java/awt/Toolkit.java
@@ -526,6 +526,10 @@ public abstract class Toolkit
toolkit = (Toolkit) obj;
return toolkit;
}
+ catch (ThreadDeath death)
+ {
+ throw death;
+ }
catch (Throwable t)
{
AWTError e = new AWTError("Cannot load AWT toolkit: " + toolkit_name);
diff --git a/java/io/ObjectStreamClass.java b/java/io/ObjectStreamClass.java
index fb9b00823..d659d98c6 100644
--- a/java/io/ObjectStreamClass.java
+++ b/java/io/ObjectStreamClass.java
@@ -850,11 +850,11 @@ outer:
{
return (Externalizable)constructor.newInstance(null);
}
- catch(Throwable t)
+ catch(Exception x)
{
throw (InvalidClassException)
new InvalidClassException(clazz.getName(),
- "Unable to instantiate").initCause(t);
+ "Unable to instantiate").initCause(x);
}
}
diff --git a/java/lang/reflect/Proxy.java b/java/lang/reflect/Proxy.java
index 8aee02fb4..f98431f7f 100644
--- a/java/lang/reflect/Proxy.java
+++ b/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/java/net/URL.java b/java/net/URL.java
index 4efd7c6d1..4ce8906b6 100644
--- a/java/net/URL.java
+++ b/java/net/URL.java
@@ -901,6 +901,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/java/security/SecureRandom.java b/java/security/SecureRandom.java
index 5e410c040..80c9c9027 100644
--- a/java/security/SecureRandom.java
+++ b/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/java/util/Timer.java b/java/util/Timer.java
index e4eb246a1..ee2a0ce19 100644
--- a/java/util/Timer.java
+++ b/java/util/Timer.java
@@ -343,6 +343,10 @@ public class Timer
{
task.run();
}
+ catch (ThreadDeath death)
+ {
+ throw death;
+ }
catch (Throwable t)
{
/* ignore all errors */
diff --git a/java/util/prefs/AbstractPreferences.java b/java/util/prefs/AbstractPreferences.java
index 69f4426e6..159a887c8 100644
--- a/java/util/prefs/AbstractPreferences.java
+++ b/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;
}
diff --git a/vm/reference/java/lang/VMProcess.java b/vm/reference/java/lang/VMProcess.java
index 51dc0ee84..bb2dbdae6 100644
--- a/vm/reference/java/lang/VMProcess.java
+++ b/vm/reference/java/lang/VMProcess.java
@@ -202,6 +202,10 @@ final class VMProcess extends Process
process.state = RUNNING;
activeMap.put(new Long(process.pid), process);
}
+ catch (ThreadDeath death)
+ {
+ throw death;
+ }
catch (Throwable t)
{
process.state = TERMINATED;