diff options
| author | Jeroen Frijters <jeroen@sumatra.nl> | 2004-12-02 13:17:20 +0000 |
|---|---|---|
| committer | Jeroen Frijters <jeroen@sumatra.nl> | 2004-12-02 13:17:20 +0000 |
| commit | 5c62022dcd79a6da46e5d4dfe9bfa95f3afcbbb5 (patch) | |
| tree | 70b6101d718407c0fdd583e2dd3ada8420457e19 | |
| parent | 07deb0cb592e8d4286e2e962f28a94e60d454a73 (diff) | |
| download | classpath-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-- | ChangeLog | 13 | ||||
| -rw-r--r-- | java/awt/EventDispatchThread.java | 5 | ||||
| -rw-r--r-- | java/awt/Toolkit.java | 4 | ||||
| -rw-r--r-- | java/io/ObjectStreamClass.java | 4 | ||||
| -rw-r--r-- | java/lang/reflect/Proxy.java | 2 | ||||
| -rw-r--r-- | java/net/URL.java | 4 | ||||
| -rw-r--r-- | java/security/SecureRandom.java | 4 | ||||
| -rw-r--r-- | java/util/Timer.java | 4 | ||||
| -rw-r--r-- | java/util/prefs/AbstractPreferences.java | 2 | ||||
| -rw-r--r-- | vm/reference/java/lang/VMProcess.java | 4 |
10 files changed, 43 insertions, 3 deletions
@@ -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; |
