Skip to main content
summaryrefslogtreecommitdiffstats
path: root/launch
diff options
context:
space:
mode:
authorDavid Inglis2003-01-16 19:25:42 +0000
committerDavid Inglis2003-01-16 19:25:42 +0000
commitad047ecf8976b95c1e7c78acb3f4c42005ac0754 (patch)
tree529c14fb56160662f5d26e90d62802789fd64d40 /launch
parent1ab7121260d4fd63e003c04e49854ea21f8484ff (diff)
downloadorg.eclipse.cdt-ad047ecf8976b95c1e7c78acb3f4c42005ac0754.tar.gz
org.eclipse.cdt-ad047ecf8976b95c1e7c78acb3f4c42005ac0754.tar.xz
org.eclipse.cdt-ad047ecf8976b95c1e7c78acb3f4c42005ac0754.zip
Fixed http://bugs.eclipse.org/bugs/show_bug.cgi?id=29532
Diffstat (limited to 'launch')
-rw-r--r--launch/org.eclipse.cdt.launch/ChangeLog9
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java4
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/AbstractCDebuggerTab.java46
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CDebuggerTab.java3
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CorefileDebuggerTab.java3
5 files changed, 46 insertions, 19 deletions
diff --git a/launch/org.eclipse.cdt.launch/ChangeLog b/launch/org.eclipse.cdt.launch/ChangeLog
index 1f899a39ec7..420911806b2 100644
--- a/launch/org.eclipse.cdt.launch/ChangeLog
+++ b/launch/org.eclipse.cdt.launch/ChangeLog
@@ -1,3 +1,12 @@
+2003-01-16 David Inglis
+ * src/.../launch/AbstractCLaunchDelegate.java
+ add check for program existance on disk before launch
+
+ * src/.../launch/internal/ui/AbstractCDebuggerTab.java
+ * src/.../launch/ui/CDebuggerTab.java
+ * src/.../launch/ui/CorefileDebuggerTab.java
+ Fixed http://bugs.eclipse.org/bugs/show_bug.cgi?id=29532
+
2003-01-06 Alain Magloire
* build.properties: Patch from Judy Green.
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java
index f7b3f430574..c6e1e1ae91e 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/AbstractCLaunchDelegate.java
@@ -396,7 +396,7 @@ abstract public class AbstractCLaunchDelegate implements ILaunchConfigurationDel
}
IFile projectPath = ((IProject) cproject.getResource()).getFile(fileName);
- if (projectPath == null || !projectPath.exists()) {
+ if (projectPath == null || !projectPath.exists() || !projectPath.getLocation().toFile().exists()) {
abort("Program file does not exist", null, ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_EXIST);
}
return projectPath.getLocation();
@@ -510,7 +510,7 @@ abstract public class AbstractCLaunchDelegate implements ILaunchConfigurationDel
private String parseToken() {
StringBuffer buf = new StringBuffer();
-
+
while (ch > 0 && !Character.isWhitespace((char) ch)) {
if (ch == '\\') {
ch = getNext();
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/AbstractCDebuggerTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/AbstractCDebuggerTab.java
index 37363ce13fc..10b032dece8 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/AbstractCDebuggerTab.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/internal/ui/AbstractCDebuggerTab.java
@@ -26,6 +26,7 @@ public abstract class AbstractCDebuggerTab extends CLaunchConfigurationTab {
// Dynamic Debugger UI widgets
protected ILaunchConfigurationTab fDynamicTab;
protected Composite fDynamicTabHolder;
+ private boolean fInitDefaults;
protected void setDebugConfig(ICDebugConfiguration config) {
fCurrentDebugConfig = config;
@@ -76,8 +77,7 @@ public abstract class AbstractCDebuggerTab extends CLaunchConfigurationTab {
ILaunchConfigurationTab tab = getDynamicTab();
if ((super.getErrorMessage() != null) || (tab == null)) {
return super.getErrorMessage();
- }
- else {
+ } else {
return tab.getErrorMessage();
}
}
@@ -100,23 +100,24 @@ public abstract class AbstractCDebuggerTab extends CLaunchConfigurationTab {
if (wc != null) {
wc.setAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_SPECIFIC_ATTRS_MAP, (Map) null);
}
- }
- else {
+ } else {
if (wc == null) {
try {
if (getLaunchConfiguration().isWorkingCopy()) {
- // get a fresh copy to work on
- wc = ((ILaunchConfigurationWorkingCopy) getLaunchConfiguration()).getOriginal().getWorkingCopy();
+ setLaunchConfigurationWorkingCopy((ILaunchConfigurationWorkingCopy)getLaunchConfiguration());
+ } else {
+ setLaunchConfigurationWorkingCopy(getLaunchConfiguration().getWorkingCopy());
}
- else {
- wc = getLaunchConfiguration().getWorkingCopy();
- }
- }
- catch (CoreException e) {
+ wc = getLaunchConfigurationWorkingCopy();
+
+ } catch (CoreException e) {
return;
}
}
- getDynamicTab().setDefaults(wc);
+ if (initDefaults()) {
+ getDynamicTab().setDefaults(wc);
+ }
+ setInitializeDefault(false);
getDynamicTab().initializeFrom(wc);
}
updateLaunchConfigurationDialog();
@@ -137,9 +138,12 @@ public abstract class AbstractCDebuggerTab extends CLaunchConfigurationTab {
ICDebugConfiguration debugConfig = getConfigForCurrentDebugger();
if (debugConfig == null) {
setDynamicTab(null);
- }
- else {
+ } else {
setDynamicTab(CDebugUIPlugin.getDefault().getDebuggerPage(debugConfig.getID()));
+ ICDebugConfiguration oldConfig = getDebugConfig();
+ if ( oldConfig != null && oldConfig != debugConfig ) {
+ setInitializeDefault(true);
+ }
}
setDebugConfig(debugConfig);
if (getDynamicTab() == null) {
@@ -165,13 +169,12 @@ public abstract class AbstractCDebuggerTab extends CLaunchConfigurationTab {
}
public void performApply(ILaunchConfigurationWorkingCopy config) {
- if ( getDebugConfig() != null ) {
+ if (getDebugConfig() != null) {
config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_ID, getDebugConfig().getID());
ILaunchConfigurationTab dynamicTab = getDynamicTab();
if (dynamicTab == null) {
config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_DEBUGGER_SPECIFIC_ATTRS_MAP, (Map) null);
- }
- else {
+ } else {
dynamicTab.performApply(config);
}
}
@@ -182,6 +185,7 @@ public abstract class AbstractCDebuggerTab extends CLaunchConfigurationTab {
ILaunchConfigurationTab dynamicTab = getDynamicTab();
if (dynamicTab != null) {
dynamicTab.setDefaults(config);
+ setInitializeDefault(false);
}
}
@@ -200,4 +204,12 @@ public abstract class AbstractCDebuggerTab extends CLaunchConfigurationTab {
return true;
}
+ protected void setInitializeDefault(boolean init) {
+ fInitDefaults = init;
+ }
+
+ protected boolean initDefaults() {
+ return fInitDefaults;
+ }
+
}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CDebuggerTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CDebuggerTab.java
index 61a75b13247..855cd673326 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CDebuggerTab.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CDebuggerTab.java
@@ -132,6 +132,9 @@ public class CDebuggerTab extends AbstractCDebuggerTab {
}
}
}
+ // if no selection meaning nothing in config the force initdefault on tab
+ setInitializeDefault(selection.equals("") ? true : false);
+
fDCombo.select(selndx == -1 ? 0 : selndx);
//The behaviour is undefined for if the callbacks should be triggered for this,
//so to avoid unnecessary confusion, we force an update.
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CorefileDebuggerTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CorefileDebuggerTab.java
index 14da6f31c72..8256a2a4c92 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CorefileDebuggerTab.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CorefileDebuggerTab.java
@@ -99,6 +99,9 @@ public class CorefileDebuggerTab extends AbstractCDebuggerTab {
}
}
}
+ // if no selection meaning nothing in config the force initdefault on tab
+ setInitializeDefault(selection.equals("") ? true : false);
+
fDCombo.select(selndx == -1 ? 0 : selndx);
//The behaviour is undefined for if the callbacks should be triggered for this,
//so to avoid unnecessary confusion, we force an update.

Back to the top