Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Check if thread is already disposed in the CDI event handler

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.core/ChangeLog,v
retrieving revision 1.94
diff -u -r1.94 ChangeLog
--- ChangeLog 14 Jan 2003 21:23:14 -0000 1.94
+++ ChangeLog 14 Jan 2003 22:25:49 -0000
@@ -1,3 +1,8 @@
+2003-01-14 Mikhail Khodjaiants
+ Check if thread is already disposed in the CDI event handler because the array of listeners used by EventManager
+ in some situations is not up to date.
+ * CThread.java
+
 2003-01-14 Alain Magloire
 
  * src/org/eclipse/cdt/debug/core/cdi/ICDIVariableManager.java: New file.
Index: src/org/eclipse/cdt/debug/internal/core/model/CThread.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CThread.java,v
retrieving revision 1.21
diff -u -r1.21 CThread.java
--- src/org/eclipse/cdt/debug/internal/core/model/CThread.java 13 Dec 2002 19:10:07 -0000 1.21
+++ src/org/eclipse/cdt/debug/internal/core/model/CThread.java 14 Jan 2003 22:25:51 -0000
@@ -112,6 +112,8 @@
  
  private int fLastStackDepth = 0;
 
+ private boolean fDisposed = false;
+
  /**
   * Constructor for CThread.
   * @param target
@@ -418,6 +420,8 @@
   */
  public void handleDebugEvent( ICDIEvent event )
  {
+  if ( isDisposed() )
+   return;
   ICDIObject source = event.getSource();
   if ( source == null )
    return;
@@ -766,6 +770,7 @@
  protected void terminated()
  {
   setRunning( false );
+  dispose();
   cleanup(); 
   fireTerminateEvent();
  }
@@ -1137,5 +1142,15 @@
   if ( adapter.equals( IRunToLine.class ) )
    return this;
   return super.getAdapter(adapter);
+ }

+ protected void dispose()
+ {
+  fDisposed = true;
+ }

+ protected boolean isDisposed()
+ {
+  return fDisposed;
  }
 }

Back to the top