From 7c13219552650ebcbb850a0302b46bfa38bb8c91 Mon Sep 17 00:00:00 2001 From: Doug Schaefer Date: Wed, 9 Nov 2005 16:19:01 +0000 Subject: [PATCH] Fixed NPE in open declaration. --- .../cdt/core/search/DOMSearchUtil.java | 3 ++- .../actions/OpenDeclarationsAction.java | 21 +++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/DOMSearchUtil.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/DOMSearchUtil.java index 6a926d907fd..2b2dc8543d1 100644 --- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/DOMSearchUtil.java +++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/core/search/DOMSearchUtil.java @@ -189,7 +189,8 @@ public class DOMSearchUtil { public static IASTName[] getSelectedNamesFrom(IASTTranslationUnit tu, int offset, int length, ParserLanguage lang) { IASTNode node = null; try{ - node = tu.selectNodeForLocation(tu.getFilePath(), offset, length); + if (tu != null) + node = tu.selectNodeForLocation(tu.getFilePath(), offset, length); } catch (ParseError er){} catch ( VirtualMachineError vmErr){ diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/OpenDeclarationsAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/OpenDeclarationsAction.java index 2abc1c4614d..2c10e153b97 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/OpenDeclarationsAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/search/actions/OpenDeclarationsAction.java @@ -104,10 +104,15 @@ public class OpenDeclarationsAction extends SelectionParseAction implements IUpd if (project instanceof ICProject) { IProject p = ((ICProject)project).getProject(); IPDOM pdom = PDOM.getPDOM(p); - tu = CDOM.getInstance().getASTService().getTranslationUnit( - input.getStorage(), - p, - pdom.getCodeReaderFactory()); + if (pdom != null) + tu = CDOM.getInstance().getASTService().getTranslationUnit( + input.getStorage(), + p, + pdom.getCodeReaderFactory()); + else + tu = CDOM.getInstance().getASTService().getTranslationUnit( + input.getStorage(), + p); lang = DOMSearchUtil.getLanguage(input.getStorage().getFullPath(), ((ICProject)project).getProject()); projectName = ((ICProject)project).getElementName(); } @@ -116,15 +121,19 @@ public class OpenDeclarationsAction extends SelectionParseAction implements IUpd return; } } else { - // an awful lot of cass goingo on here... + // an awful lot of casts goingo on here... IWorkingCopy workingCopy = (IWorkingCopy)fEditor.getInputCElement(); IFile resourceFile = (IFile)workingCopy.getResource(); project = new CProject(null, resourceFile.getProject()); IPDOM pdom = PDOM.getPDOM(resourceFile.getProject()); try { - tu = CDOM.getInstance().getASTService().getTranslationUnit( + if (pdom != null) + tu = CDOM.getInstance().getASTService().getTranslationUnit( resourceFile, pdom.getCodeReaderFactory(workingCopy)); + else + tu = CDOM.getInstance().getASTService().getTranslationUnit( + resourceFile); } catch (IASTServiceProvider.UnsupportedDialectException e) { operationNotAvailable(CSEARCH_OPERATION_OPERATION_UNAVAILABLE_MESSAGE); return;