From 17a5ba8361cfd4e99cf853c4b1a96417df85c90e Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Sat, 8 Oct 2016 15:35:33 -0700 Subject: [PATCH] Fixed a potential NPE. Change-Id: I274242b74a27f17eeb3a6d7841b1107be22cd096 --- .../cdt/internal/core/dom/parser/CStringValue.java | 2 +- .../cdt/internal/core/dom/parser/CompositeValue.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CStringValue.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CStringValue.java index 2c4e9020365..8e7cb9a72b5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CStringValue.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CStringValue.java @@ -186,7 +186,7 @@ public final class CStringValue implements IValue { IValue val = IntegralValue.create(c); return new EvalFixed(CPPBasicType.CHAR, ValueCategory.PRVALUE, val); } - return null; + return EvalFixed.INCOMPLETE; } @Override diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java index 02dd0bdf80f..c1a2c926f55 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/CompositeValue.java @@ -81,18 +81,18 @@ public final class CompositeValue implements IValue { @Override public ICPPEvaluation getSubValue(final int index) { - return rangeIsValid(index) ? values[index] : EvalFixed.INCOMPLETE; + return rangeIsValid(index) && values[index] != null ? values[index] : EvalFixed.INCOMPLETE; } - private boolean rangeIsValid(final int index) { - return numberOfSubValues() > index && index >= 0; + private boolean rangeIsValid(int index) { + return 0 <= index && index < values.length; } public static IValue create(EvalInitList initList) { ICPPEvaluation[] values = new ICPPEvaluation[initList.getClauses().length]; for (int i = 0; i < initList.getClauses().length; i++) { ICPPEvaluation eval = initList.getClauses()[i]; - values[i] = new EvalFixed(eval.getType(null), eval.getValueCategory(null), eval.getValue(null)); + values[i] = new EvalFixed(eval.getType(null), eval.getValueCategory(null), eval.getValue(null)); } return new CompositeValue(initList, values); } @@ -175,7 +175,7 @@ public final class CompositeValue implements IValue { ActivationRecord record = new ActivationRecord(); ICPPEvaluation[] values = new ICPPEvaluation[ClassTypeHelper.getFields(classType, null).length]; - // recursively create all the base class member variables + // Recursively create all the base class member variables. ICPPBase[] bases = ClassTypeHelper.getBases(classType, null); for (ICPPBase base : bases) { IBinding baseClass = base.getBaseClass();