From a2b23f55a351c6e6fe5339f2fc37af0a5a1bb112 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Fri, 3 Dec 2004 19:14:42 +0000 Subject: [PATCH] Fix for bug 80106: Terminating during stepping state caused exception in CDT. --- debug/org.eclipse.cdt.debug.core/ChangeLog | 4 ++++ .../cdt/debug/internal/core/model/CDebugTarget.java | 1 - .../cdt/debug/internal/core/model/CThread.java | 12 ++++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 05891aa8dfe..3079917f147 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,7 @@ +2004-12-03 Mikhail Khodjaiants + Fix for bug 80106: Terminating during stepping state caused exception in CDT. + * CThread.java + 2004-12-01 Mikhail Khodjaiants Partial fix for bug 77444: CDT does not handle address breakpoints across sessions. * CBreakpointManager.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java index 5d6634db21b..01eeecb9dd9 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java @@ -591,7 +591,6 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv currentCDIThread = getCDITarget().getCurrentThread(); } catch( CDIException e ) { - CDebugCorePlugin.log( e ); } for( int i = 0; i < cdiThreads.length; ++i ) { CThread thread = findThread( oldList, cdiThreads[i] ); 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 a5017202ff8..8e0b2d7cf6f 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 @@ -156,13 +156,17 @@ public class CThread extends CDebugElement implements ICThread, IRestart, IResum int depth = getStackDepth(); ICDIStackFrame[] frames = (depth != 0) ? getCDIStackFrames( 0, (depth > getMaxStackDepth()) ? getMaxStackDepth() : depth ) : new ICDIStackFrame[0]; if ( fStackFrames.isEmpty() ) { - addStackFrames( frames, 0, frames.length ); + if ( frames.length > 0 ) { + addStackFrames( frames, 0, frames.length ); + } } else if ( depth < getLastStackDepth() ) { disposeStackFrames( 0, getLastStackDepth() - depth ); - updateStackFrames( frames, 0, fStackFrames, fStackFrames.size() ); - if ( fStackFrames.size() < frames.length ) { - addStackFrames( frames, fStackFrames.size(), frames.length - fStackFrames.size() ); + if ( frames.length > 0 ) { + updateStackFrames( frames, 0, fStackFrames, fStackFrames.size() ); + if ( fStackFrames.size() < frames.length ) { + addStackFrames( frames, fStackFrames.size(), frames.length - fStackFrames.size() ); + } } } else if ( depth > getLastStackDepth() ) {