From 662091c72d3898dde9832d76f9a91b5cd3500bee Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Mon, 10 Oct 2016 18:14:13 -0700 Subject: [PATCH] Added protection against ClassCastException Change-Id: Ib14420d944c840ebda24305530f82142998cfe5c --- .../core/dom/parser/cpp/semantics/ExecDeclarator.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecDeclarator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecDeclarator.java index f02af72c508..cbe16c2d309 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecDeclarator.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/ExecDeclarator.java @@ -88,8 +88,13 @@ public final class ExecDeclarator implements ICPPExecution { } else if (isPointerType(nestedType) && !isCStringType(nestedType)) { return createPointerValue(record, context, computedInitializerEval); } else if (isArrayType(nestedType) && !isCStringType(nestedType)) { - IValue value = CompositeValue.create((EvalInitList) computedInitializerEval,(IArrayType) (type)); - return new EvalFixed(type, computedInitializerEval.getValueCategory(context.getPoint()), value); + if (computedInitializerEval instanceof EvalInitList) { + IValue value = CompositeValue.create((EvalInitList) computedInitializerEval, (IArrayType) (type)); + return new EvalFixed(type, computedInitializerEval.getValueCategory(context.getPoint()), value); + } else { + // TODO(sprigogin): Should something else be done here? + return EvalFixed.INCOMPLETE; + } } else if (isValueInitialization(computedInitializerEval)) { ICPPEvaluation defaultValue = new EvalTypeId(type, context.getPoint(), false, new ICPPEvaluation[]{}); return new EvalFixed(type, defaultValue.getValueCategory(context.getPoint()), defaultValue.getValue(context.getPoint()));