diff --git a/Ghidra/Features/PyGhidra/src/main/java/ghidra/pyghidra/PyGhidraTaskMonitor.java b/Ghidra/Features/PyGhidra/src/main/java/ghidra/pyghidra/PyGhidraTaskMonitor.java index ff09f46ee9..3bb6b51a6d 100644 --- a/Ghidra/Features/PyGhidra/src/main/java/ghidra/pyghidra/PyGhidraTaskMonitor.java +++ b/Ghidra/Features/PyGhidra/src/main/java/ghidra/pyghidra/PyGhidraTaskMonitor.java @@ -38,7 +38,7 @@ public class PyGhidraTaskMonitor implements TaskMonitor { private boolean isIndeterminate; private volatile boolean isCancelled; - private Timer timer = new Timer(); + private Timer timer; private WeakSet listeners = WeakDataStructureFactory.createCopyOnReadWeakSet(); private TriConsumer changeCallback; @@ -55,6 +55,7 @@ public class PyGhidraTaskMonitor implements TaskMonitor { TriConsumer changeCallback) { isCancelled = false; if (timeoutSecs != null) { + timer = new Timer(true); timer.schedule(new PyGhidraTimeOutTask(), timeoutSecs * 1000); } this.changeCallback = changeCallback; @@ -143,7 +144,9 @@ public class PyGhidraTaskMonitor implements TaskMonitor { @Override public void cancel() { - timer.cancel(); // Terminate the timer thread + if (timer != null) { + timer.cancel(); // Terminate the timer thread + } isCancelled = true; }