[poincare/unit] Check uninitialized expressions

In Calculation, keeping the BACK key pressed can lead to iffy
simplifications and uninitialized expressions beign passed to
ShouldDisplayAdditionalOutputs and SetAdditionalExpressions methods.

Change-Id: If248ab193c471ff433828fc841e01a391e0c052d
This commit is contained in:
Gabriel Ozouf
2020-09-25 14:26:24 +02:00
committed by Émilie Feral
parent bc7ca057a0
commit 0c1d0195cd

View File

@@ -769,6 +769,9 @@ void Unit::ChooseBestRepresentativeAndPrefixForValue(Expression units, double *
}
bool Unit::ShouldDisplayAdditionalOutputs(double value, Expression unit, Preferences::UnitFormat unitFormat) {
if (unit.isUninitialized()) {
return false;
}
UnitNode::Vector<int> vector = UnitNode::Vector<int>::FromBaseUnits(unit);
const Representative * representative = Representative::RepresentativeForDimension(vector);
@@ -781,6 +784,9 @@ bool Unit::ShouldDisplayAdditionalOutputs(double value, Expression unit, Prefere
}
int Unit::SetAdditionalExpressions(Expression units, double value, Expression * dest, int availableLength, ExpressionNode::ReductionContext reductionContext) {
if (units.isUninitialized()) {
return 0;
}
const Representative * representative = units.type() == ExpressionNode::Type::Unit ? static_cast<Unit &>(units).node()->representative() : UnitNode::Representative::RepresentativeForDimension(UnitNode::Vector<int>::FromBaseUnits(units));
if (!representative) {
return 0;