*** empty log message ***
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties index 3e08ef5..66a5517 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties
@@ -328,3 +328,4 @@ CVSSyncTreeSubscriber.0={0} is not a valid comparison criteria for subscriber {1} CVSRevisionNumberCompareCriteria.1=Revision number comparison RemoteTagSynchronizer.0=Refreshing {0} +ReentrantLock.9=An error occurred writting CVS synchronization information to disk. Some information may be lost.
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock.java index 50ea9de..1a43bfd 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock.java
@@ -18,9 +18,12 @@ import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.team.internal.ccvs.core.CVSException; +import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; +import org.eclipse.team.internal.ccvs.core.CVSStatus; import org.eclipse.team.internal.ccvs.core.Policy; import org.eclipse.team.internal.ccvs.core.util.Assert; @@ -75,10 +78,23 @@ return (IContainer[]) changedFolders.toArray(new IContainer[changedFolders.size()]); } public void flush(IProgressMonitor monitor) throws CVSException { - operation.flush(this, monitor); + try { + operation.flush(this, monitor); + } catch (OutOfMemoryError e) { + throw e; + } catch (Error e) { + handleAbortedFlush(e); + throw e; + } catch (RuntimeException e) { + handleAbortedFlush(e); + throw e; + } changedResources.clear(); changedFolders.clear(); } + private void handleAbortedFlush(Throwable t) { + CVSProviderPlugin.log(new CVSStatus(IStatus.ERROR, Policy.bind("ReentrantLock.9"), t)); //$NON-NLS-1$ + } } public interface IFlushOperation {