From a3566fff4f6a80484ccd46e73bb0209e78af98c5 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Fri, 16 May 2008 17:10:36 +0000 Subject: [PATCH] Let indexer handle StackOverflowErrors (caught and logged like RuntimeExceptions). --- .../core/pdom/AbstractIndexerTask.java | 19 +++++++------ .../cdt/internal/core/pdom/PDOMWriter.java | 28 +++++++++++-------- 2 files changed, 28 insertions(+), 19 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java index 1a7fc07bab9..009456437a2 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/AbstractIndexerTask.java @@ -585,6 +585,7 @@ public abstract class AbstractIndexerTask extends PDOMWriter { return; } + Throwable th= null; try { if (fShowActivity) { System.out.println("Indexer: parsing " + path.toOSString()); //$NON-NLS-1$ @@ -597,15 +598,17 @@ public abstract class AbstractIndexerTask extends PDOMWriter { if (ast != null) { writeToIndex(linkageID, ast, computeHashCode(scanInfo), pm); } + } catch (CoreException e) { + th= e; + } catch (RuntimeException e) { + th= e; + } catch (PDOMNotImplementedError e) { + th= e; + } catch (StackOverflowError e) { + th= e; } - catch (CoreException e) { - swallowError(path, e); - } - catch (RuntimeException e) { - swallowError(path, e); - } - catch (PDOMNotImplementedError e) { - swallowError(path, e); + if (th != null) { + swallowError(path, th); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java index 111f8097fec..92f1829508d 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java @@ -192,14 +192,19 @@ abstract public class PDOMWriter { if (fShowActivity) { System.out.println("Indexer: adding " + ifl.getURI()); //$NON-NLS-1$ } + Throwable th= null; try { storeFileInIndex(index, ifl, symbolMap, linkageID, configHash, contextIncludes); } catch (RuntimeException e) { - stati.add(CCorePlugin.createStatus( - NLS.bind(Messages.PDOMWriter_errorWhileParsing, ifl.getURI().getPath()), e)); + th= e; } catch (PDOMNotImplementedError e) { + th= e; + } catch (StackOverflowError e) { + th= e; + } + if (th != null) { stati.add(CCorePlugin.createStatus( - NLS.bind(Messages.PDOMWriter_errorWhileParsing, ifl.getURI().getPath()), e)); + NLS.bind(Messages.PDOMWriter_errorWhileParsing, ifl.getURI().getPath()), th)); } if (i