From 1ec487930fc7d8e8a8aa14388b8e5a8db33cc113 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Tue, 19 Jun 2007 08:48:46 +0000 Subject: [PATCH] Fix for 193152, ArrayOutOfBoundsException in name resolution. --- .../core/dom/parser/cpp/GNUCPPSourceParser.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java index 2c731f42764..9a1a2973375 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java @@ -2824,8 +2824,14 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { protected IASTName createName(ITokenDuple duple) { if (duple == null) return createName(); - if (duple.getSegmentCount() != 1) - return createQualifiedName(duple); + if (duple.getSegmentCount() != 1) { + // workaround for bug 193152, + // looks like duple.getSeqmentCount() and duple.getSegments().length can be different. + ICPPASTQualifiedName qname= createQualifiedName(duple); + if (qname.getNames().length > 0) { + return qname; + } + } if (duple.getTemplateIdArgLists() != null) return createTemplateID(duple);