1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Fix for 192664: NPE in CReconciler

This commit is contained in:
Anton Leherbauer 2007-06-15 06:58:38 +00:00
parent 0a9f69a04c
commit 33bf35f24f
2 changed files with 18 additions and 4 deletions

View file

@ -208,7 +208,12 @@ public class ASTCache {
try {
IASTTranslationUnit ast= getAST(tUnit, index, wait, monitor);
ILanguage lang= (tUnit instanceof TranslationUnit) ? ((TranslationUnit) tUnit).getLanguageOfContext() : tUnit.getLanguage();
return astRunnable.runOnAST(lang, ast);
if (ast == null) {
return astRunnable.runOnAST(lang, ast);
}
synchronized (ast) {
return astRunnable.runOnAST(lang, ast);
}
}
catch (CoreException e) {
return e.getStatus();

View file

@ -126,9 +126,9 @@ public class CReconcilingStrategy implements IReconcilingStrategy, IReconcilingS
forced= workingCopy.isConsistent();
ast= workingCopy.reconcile(computeAST, true, fProgressMonitor);
}
} catch(OperationCanceledException oce) {
} catch (OperationCanceledException oce) {
// document was modified while parsing
} catch(CModelException e) {
} catch (CModelException e) {
IStatus status= new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, IStatus.OK, "Error in CDT UI during reconcile", e); //$NON-NLS-1$
CUIPlugin.getDefault().log(status);
} finally {
@ -138,7 +138,16 @@ public class CReconcilingStrategy implements IReconcilingStrategy, IReconcilingS
index= ast.getIndex();
}
try {
((ICReconcilingListener)fEditor).reconciled(ast, forced, fProgressMonitor);
if (ast == null) {
((ICReconcilingListener)fEditor).reconciled(ast, forced, fProgressMonitor);
} else {
synchronized (ast) {
((ICReconcilingListener)fEditor).reconciled(ast, forced, fProgressMonitor);
}
}
} catch(Exception e) {
IStatus status= new Status(IStatus.ERROR, CUIPlugin.PLUGIN_ID, IStatus.OK, "Error in CDT UI during reconcile", e); //$NON-NLS-1$
CUIPlugin.getDefault().log(status);
} finally {
if (index != null) {
index.releaseReadLock();