From 68beea8757745e0036d8d7c5f12084eb1c900aea Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Thu, 4 Sep 2003 15:36:22 +0000 Subject: [PATCH] monitor.setCancelled() is accessing the UI thread which is illegal and can throw an SWT illegal access exception. IProgressMonitor should probably be fix .. but meanwhile ... --- .../src/org/eclipse/cdt/internal/core/CBuilder.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CBuilder.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CBuilder.java index 41d86caf6d5..516030dfbd8 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CBuilder.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CBuilder.java @@ -93,7 +93,6 @@ public class CBuilder extends ACBuilder { private boolean invokeMake(boolean fullBuild, IProgressMonitor monitor) { boolean isClean = false; - boolean isCanceled = false; IProject currProject = getProject(); SubProgressMonitor subMonitor = null; @@ -157,13 +156,13 @@ public class CBuilder extends ACBuilder { if (launcher.waitAndRead(stdout, stderr, subMonitor) != CommandLauncher.OK) errMsg = launcher.getErrorMessage(); - isCanceled = monitor.isCanceled(); - monitor.setCanceled(false); - subMonitor = new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN); - subMonitor.subTask("Refresh From Local"); + subMonitor.setTaskName("Refresh From Local"); try { - currProject.refreshLocal(IResource.DEPTH_INFINITE, subMonitor); + // do not allow the cancel of the refresh, since the builder is external + // to Eclipse files may have been created/modified and we will be out-of-sync + // The caveat is for hugue projects, it may take sometimes at every build. + currProject.refreshLocal(IResource.DEPTH_INFINITE, null); } catch (CoreException e) { } @@ -188,7 +187,6 @@ public class CBuilder extends ACBuilder { epm.reportProblems(); subMonitor.done(); - monitor.setCanceled(isCanceled); } } catch (Exception e) { CCorePlugin.log(e);