From a9e984c9959b83f48b9167d99630511761e3fa56 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Mon, 1 Jan 2018 19:58:49 -0500 Subject: [PATCH] Bug 529337 - NPE in PDOMCPPLinkage.onCreateNameHelper() Change-Id: I4fc9ce82b0960dfc0a69044f9c2b3d1edb3d4622 --- .../internal/core/pdom/dom/cpp/PDOMCPPLinkage.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java index f0ba1b38675..5a6ec404f77 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java @@ -22,6 +22,7 @@ import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; +import org.eclipse.cdt.core.dom.ast.IASTFileLocation; import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNode; @@ -1008,7 +1009,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { pdomBinding = createBinding(type, method, fileLocalRec); } else if (!getPDOM().hasLastingDefinition(pdomBinding)) { pdomBinding.update(this, method); - old.remove(pdomBinding); + old.remove((ICPPMethod) pdomBinding); // Update the tags based on the tags from the new binding. This was in // PDOMBinding.update, but not all subclasses (e.g., PDOMCPPFunction) @@ -1434,9 +1435,12 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants { } if (doit) { long rec= file.getLastUsingDirectiveRec(); - PDOMCPPUsingDirective ud= new PDOMCPPUsingDirective(this, rec, containerNS, - pdomName.getBinding(), pdomName.getFileLocation().getNodeOffset()); - file.setLastUsingDirective(ud.getRecord()); + IASTFileLocation fileLoc = pdomName.getFileLocation(); + if (fileLoc != null) { + PDOMCPPUsingDirective ud= new PDOMCPPUsingDirective(this, rec, containerNS, + pdomName.getBinding(), fileLoc.getNodeOffset()); + file.setLastUsingDirective(ud.getRecord()); + } } } else if (parentNode instanceof ICPPASTElaboratedTypeSpecifier) { ICPPASTElaboratedTypeSpecifier elaboratedSpecifier = (ICPPASTElaboratedTypeSpecifier) parentNode;