diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java index 88307d3388b..1e02a2c9157 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java @@ -205,6 +205,9 @@ public final class CompositeValue implements IValue { IValue compValue = CompositeValue.create(baseClassType); for (ICPPField baseField : baseFields) { int fieldPos = CPPASTFieldReference.getFieldPosition(baseField); + if (fieldPos == -1) { + continue; + } record.update(baseField, compValue.getSubValue(fieldPos)); // TODO(nathanridge): This won't work with multiple inheritance, since 'fieldPos' // is a field position in the base class' hierarchy, while values[] expects @@ -220,6 +223,9 @@ public final class CompositeValue implements IValue { continue; final ICPPEvaluation value = EvalUtil.getVariableValue(field, record); int fieldPos = CPPASTFieldReference.getFieldPosition(field); + if (fieldPos == -1) { + continue; + } record.update(field, value); values[fieldPos] = value; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldReference.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldReference.java index abc62e673f4..ab5c84b8b11 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldReference.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTFieldReference.java @@ -322,6 +322,9 @@ public class CPPASTFieldReference extends ASTNode public static int getFieldPosition(ICPPField field) { final ICPPClassType ownerType = field.getClassOwner(); + if (ownerType == null) { + return -1; + } final ICPPClassType[] baseClasses = ClassTypeHelper.getAllBases(ownerType, null); int baseFields = 0; for (ICPPClassType baseClass : baseClasses) {