diff options
author | Tom Tromey <tromey@redhat.com> | 2001-11-13 23:09:23 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2001-11-13 23:09:23 +0000 |
commit | f9d44b00b686b9973139863c7d6472c2b7a11eb3 (patch) | |
tree | e9b663583e713a1ac78ca30e1a59b238265e40fd /libjava/java/util/Timer.java | |
parent | c19083d85209756915bfc19d00e38d39dbb73039 (diff) | |
download | gcc-f9d44b00b686b9973139863c7d6472c2b7a11eb3.zip gcc-f9d44b00b686b9973139863c7d6472c2b7a11eb3.tar.gz gcc-f9d44b00b686b9973139863c7d6472c2b7a11eb3.tar.bz2 |
re PR libgcj/4859 (java.util.Timer class throw IllegalStateException on cancel())
Fix for PR libgcj/4859:
* java/util/Timer.java (TaskQueue.isStopped): New method.
(Scheduler.run): Don't re-schedule task if queue has been
stopped.
From-SVN: r46994
Diffstat (limited to 'libjava/java/util/Timer.java')
-rw-r--r-- | libjava/java/util/Timer.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/libjava/java/util/Timer.java b/libjava/java/util/Timer.java index 32c0bea..2c7197f 100644 --- a/libjava/java/util/Timer.java +++ b/libjava/java/util/Timer.java @@ -285,6 +285,14 @@ public class Timer this.notify(); } + /** + * This method returns <code>true</code> if the queue has been + * stopped. + */ + public synchronized boolean isStopped () + { + return this.heap == null; + } } // TaskQueue /** @@ -337,8 +345,9 @@ public class Timer } } - // Calculate next time and possibly re-enqueue - if (task.scheduled >= 0) + // Calculate next time and possibly re-enqueue. + // Don't bother re-scheduling if the queue has been stopped. + if (! queue.isStopped () && task.scheduled >= 0) { if (task.fixed) { |