From 2d5f3da68e1b026bfcfcaa68ac47d1ee9e63661b Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Thu, 17 May 2012 12:37:43 -0700 Subject: [PATCH] Fixed an NPE. --- .../checkers/ClassMembersInitializationChecker.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java index 96424e7596f..ef69af9fe9c 100644 --- a/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java +++ b/codan/org.eclipse.cdt.codan.checkers/src/org/eclipse/cdt/codan/internal/checkers/ClassMembersInitializationChecker.java @@ -35,6 +35,7 @@ import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.dom.ast.IEnumeration; import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IPointerType; +import org.eclipse.cdt.core.dom.ast.IProblemBinding; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDefinition; @@ -173,10 +174,13 @@ public class ClassMembersInitializationChecker extends AbstractIndexAstChecker { Set actualConstructorFields = constructorsStack.peek(); if (!actualConstructorFields.isEmpty()) { IBinding binding = name.resolveBinding(); - IField equivalentFieldBinding = getContainedEquivalentBinding(actualConstructorFields, binding, name.getTranslationUnit().getIndex()); - if (equivalentFieldBinding != null) { - if ((CPPVariableReadWriteFlags.getReadWriteFlags(name) & PDOMName.WRITE_ACCESS) != 0) { - actualConstructorFields.remove(equivalentFieldBinding); + if (binding != null && !(binding instanceof IProblemBinding)) { + IField equivalentFieldBinding = getContainedEquivalentBinding( + actualConstructorFields, binding, name.getTranslationUnit().getIndex()); + if (equivalentFieldBinding != null) { + if ((CPPVariableReadWriteFlags.getReadWriteFlags(name) & PDOMName.WRITE_ACCESS) != 0) { + actualConstructorFields.remove(equivalentFieldBinding); + } } } }