diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java index 35c0385e09e..85457a2568c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java @@ -1582,11 +1582,11 @@ public class CPPVisitor extends ASTQueries { return true; } if ((binding1 instanceof IIndexBinding) != (binding2 instanceof IIndexBinding) && index != null) { - if (binding1 instanceof IIndexBinding) { - binding2 = index.adaptBinding(binding2); - } else { - binding1 = index.adaptBinding(binding1); - } + // Even though we know one of them is an index binding, we need to adapt both because they might not come from an + // index with the same number of fragments. So one of them could be a composite binding and the other one not. + binding1 = index.adaptBinding(binding1); + binding2 = index.adaptBinding(binding2); + if (binding1 == null || binding2 == null) { return false; }