diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 3769cd4ed25..38d546c1259 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,8 @@ +2004-06-23 Mikhail Khodjaiants + Fix for bug 68316: Exception shutting down Eclipse with an active debug session. + * CStackFrame.java + * CThread.java + 2004-06-22 Mikhail Khodjaiants Replaced global resource bundles by messages. diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java index 1d61de886bc..508f67118b2 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java @@ -519,6 +519,12 @@ public class CStackFrame extends CDebugElement implements ICStackFrame, IRestart if ( adapter == IRunToAddress.class ) { return getDebugTarget().getAdapter( adapter ); } + if ( adapter == CStackFrame.class ) { + return this; + } + if ( adapter == ICStackFrame.class ) { + return this; + } if ( adapter == IStackFrame.class ) { return this; } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java index 774ce060b32..5a861f59fcf 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java @@ -750,9 +750,10 @@ public class CThread extends CDebugElement Iterator it = fStackFrames.iterator(); while( it.hasNext() ) { - CStackFrame frame = (CStackFrame)(((IAdaptable)it.next()).getAdapter( CStackFrame.class )); - if ( frame != null ) - frame.dispose(); + Object obj = it.next(); + if ( obj instanceof CStackFrame ) { + ((CStackFrame)obj).dispose(); + } } fStackFrames.clear(); setLastStackDepth( 0 );