From b8da02462e799b41c272d92ffb5c16b29d9c5200 Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Wed, 17 Oct 2007 10:24:59 +0000 Subject: [PATCH] Fix for 206573: NPE in CModelBuilder2 with illegal typedef --- .../internal/core/model/CModelBuilder2.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java index 220421fe029..ee175fdfb91 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder2.java @@ -551,9 +551,13 @@ public class CModelBuilder2 implements IContributedModelBuilder { return createEnumeration(parent, (IASTEnumerationSpecifier)declSpecifier); } } else if (declSpecifier instanceof IASTNamedTypeSpecifier) { - return createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate); + if (declarator != null) { + return createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate); + } } else if (declSpecifier instanceof IASTSimpleDeclSpecifier) { - return createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate); + if (declarator != null) { + return createTypedefOrFunctionOrVariable(parent, declSpecifier, declarator, isTemplate); + } } else { assert false : "TODO: " + declSpecifier.getClass().getName(); //$NON-NLS-1$ } @@ -562,13 +566,12 @@ public class CModelBuilder2 implements IContributedModelBuilder { private CElement createTypedefOrFunctionOrVariable(Parent parent, IASTDeclSpecifier declSpecifier, IASTDeclarator declarator, boolean isTemplate) throws CModelException { + assert declarator != null; if (declSpecifier.getStorageClass() == IASTDeclSpecifier.sc_typedef) { return createTypeDef(parent, declSpecifier, declarator); } - if (declarator != null) { - if (declarator instanceof IASTFunctionDeclarator && !hasNestedPointerOperators(declarator)) { - return createFunctionDeclaration(parent, declSpecifier, (IASTFunctionDeclarator)declarator, isTemplate); - } + if (declarator instanceof IASTFunctionDeclarator && !hasNestedPointerOperators(declarator)) { + return createFunctionDeclaration(parent, declSpecifier, (IASTFunctionDeclarator)declarator, isTemplate); } return createVariable(parent, declSpecifier, declarator, isTemplate); } @@ -842,9 +845,6 @@ public class CModelBuilder2 implements IContributedModelBuilder { } private VariableDeclaration createVariable(Parent parent, IASTDeclSpecifier specifier, IASTDeclarator declarator, boolean isTemplate) throws CModelException { - if (declarator == null) { - return null; - } IASTDeclarator nestedDeclarator= declarator; while (nestedDeclarator.getNestedDeclarator() != null) { nestedDeclarator= nestedDeclarator.getNestedDeclarator();