diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java
index 70a6c2e7382..aeb94691c30 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/SemanticUtil.java
@@ -221,7 +221,10 @@ public class SemanticUtil {
 	static IType getUltimateTypeViaTypedefs(IType type) {
 		try {
 			while(type instanceof ITypedef) {
-				type= ((ITypedef)type).getType();
+				IType t= ((ITypedef)type).getType();
+				if (t == null) 
+					return type;
+				type= t;
 			}
 		} catch(DOMException e) {
 			type= e.getProblem();