From ca19a9fd5902f74ca1ef139e62513228716f4455 Mon Sep 17 00:00:00 2001 From: James Blackburn Date: Tue, 24 Nov 2009 14:02:59 +0000 Subject: [PATCH] Bug 295988 Inability to create asynchronously created variable during update shouldn't break other variable updates - Log CDIException during #processSuspendedEvent as this indicates something has broken. --- .../cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java | 4 +++- .../org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java index edd9793a3d2..15e9078914c 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/EventManager.java @@ -23,6 +23,7 @@ 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.model.ICDIStackFrame; import org.eclipse.cdt.debug.mi.core.MIException; +import org.eclipse.cdt.debug.mi.core.MIPlugin; import org.eclipse.cdt.debug.mi.core.MISession; import org.eclipse.cdt.debug.mi.core.cdi.event.ChangedEvent; import org.eclipse.cdt.debug.mi.core.cdi.event.CreatedEvent; @@ -328,7 +329,8 @@ public class EventManager extends SessionObject implements ICDIEventManager, Obs srcMgr.update(currentTarget); } } catch (CDIException e) { - //System.out.println(e); + // Something went wrong => preventing updates to the model, this is serious + MIPlugin.log(e); } return true; } diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java index 7ea3c654090..f9f6e09c136 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java +++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java @@ -687,7 +687,11 @@ public class VariableManager extends Manager { variable.setMIVarCreate(var); update(target, variable, eventList); } catch (MIException e) { - throw new MI2CDIException(e); + // Creating failed, variable not in scope => remove + // No events to fire as the variable isn't backed by a MIVar + getVariablesList(target).remove(variable); + variable.setUpdated(false); + return; } catch (CDIException e) { throw e; }