From bb7cb6bd1a5fde306d7be236ae3b993214b97ecc Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Fri, 14 Sep 2018 09:26:57 +0800 Subject: [PATCH] fix(ui): breakpoint on other source causing app crash when debugging --- .../com/stardust/autojs/rhino/debug/Debugger.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/autojs/src/main/java/com/stardust/autojs/rhino/debug/Debugger.java b/autojs/src/main/java/com/stardust/autojs/rhino/debug/Debugger.java index 6275fd48..05d3dcae 100644 --- a/autojs/src/main/java/com/stardust/autojs/rhino/debug/Debugger.java +++ b/autojs/src/main/java/com/stardust/autojs/rhino/debug/Debugger.java @@ -32,7 +32,7 @@ public class Debugger implements DebugCallbackInternal { @Nullable private ScriptExecution mScriptExecution; @Nullable - private Dim.SourceInfo mSourceInfo; + private volatile Dim.SourceInfo mCurrentSourceInfo; private WeakReference mWeakDebugCallback; @@ -56,7 +56,7 @@ public class Debugger implements DebugCallbackInternal { if (!sourceInfo.url().equals(mSourceUrl)) { return; } - mSourceInfo = sourceInfo; + mCurrentSourceInfo = sourceInfo; if(mDebugCallback != null){ mDebugCallback.updateSourceText(sourceInfo); } @@ -75,6 +75,7 @@ public class Debugger implements DebugCallbackInternal { return; } mSkipOtherFileBreakpoint = false; + mCurrentSourceInfo = lastFrame.sourceInfo(); if(mDebugCallback != null){ mDebugCallback.enterInterrupt(lastFrame, threadTitle, alertMessage); } @@ -101,8 +102,9 @@ public class Debugger implements DebugCallbackInternal { } public void breakpoint(int line, boolean enabled) { - if (mSourceInfo != null) { - mSourceInfo.breakpoint(line, enabled); + Dim.SourceInfo sourceInfo = mCurrentSourceInfo; + if (sourceInfo != null) { + sourceInfo.breakpoint(line, enabled); } } @@ -150,7 +152,7 @@ public class Debugger implements DebugCallbackInternal { mDim.detach(); mScriptExecution = null; mSourceUrl = null; - mSourceInfo = null; + mCurrentSourceInfo = null; } public void setDebugCallback(DebugCallback debugCallback) {