diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 40b72b4d6a0..5b3b4b6a715 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,7 @@ +2003-08-05 Mikhail Khodjaiants + Invalidate error variables when the session is resumed. + * CVariable.java + 2003-07-30 Mikhail Khodjaiants Moved the 'getReferencedProject' method to 'CDebugUtils'. Added the cycle checking. * CDebugUtils.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java index e244002e77a..9e8f08dd1bf 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java @@ -17,6 +17,7 @@ import org.eclipse.cdt.debug.core.cdi.event.ICDIChangedEvent; import org.eclipse.cdt.debug.core.cdi.event.ICDIDestroyedEvent; import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent; import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener; +import org.eclipse.cdt.debug.core.cdi.event.ICDIResumedEvent; import org.eclipse.cdt.debug.core.cdi.model.ICDIArgumentObject; import org.eclipse.cdt.debug.core.cdi.model.ICDIObject; import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame; @@ -230,7 +231,7 @@ public abstract class CVariable extends CDebugElement { try { - if ( fCDIVariable != null ) + if ( fCDIVariable != null && !(fCDIVariable instanceof ErrorVariable) ) getCDISession().getVariableManager().destroyVariable( fCDIVariable ); } catch( CDIException e ) @@ -526,6 +527,25 @@ public abstract class CVariable extends CDebugElement handleDestroyedEvent( (ICDIDestroyedEvent)event ); } } + else if ( event instanceof ICDIResumedEvent ) + { + handleResumedEvent( (ICDIResumedEvent)event ); + } + } + } + + private void handleResumedEvent( ICDIResumedEvent event ) + { + try + { + if ( getCDIVariable() instanceof ErrorVariable ) + { + getInternalVariable().invalidate(); + setStatus( ICDebugElementErrorStatus.OK, null ); + } + } + catch( CDIException e ) + { } }