[sequence] Fixed crash due to undefined sequence

Change-Id: Ie67ff4aa9a53eb8b04535e3b61737e11c9049316
This commit is contained in:
Arthur Camouseigt
2020-09-14 12:41:29 +02:00
committed by Émilie Feral
parent b8544e3708
commit 51002066e9
7 changed files with 27 additions and 10 deletions

View File

@@ -30,12 +30,14 @@ const Expression CacheContext<T>::expressionForSymbolAbstract(const Poincare::Sy
return Float<T>::Builder(m_values[index][1]);
}
Ion::Storage::Record record = m_sequenceContext->sequenceStore()->recordAtIndex(index);
Sequence * seq = m_sequenceContext->sequenceStore()->modelForRecord(record);
rank.replaceSymbolWithExpression(Symbol::Builder(UCodePointUnknown), Float<T>::Builder(m_nValue));
T n = PoincareHelpers::ApproximateToScalar<T>(rank, this);
// In case the rank is not int or sequence referenced is not defined, return NAN
if (std::floor(n) == n && seq->fullName() != nullptr) {
return Float<T>::Builder(seq->valueAtRank<T>(n, m_sequenceContext));
if (!record.isNull()) {
Sequence * seq = m_sequenceContext->sequenceStore()->modelForRecord(record);
rank.replaceSymbolWithExpression(Symbol::Builder(UCodePointUnknown), Float<T>::Builder(m_nValue));
T n = PoincareHelpers::ApproximateToScalar<T>(rank, this);
// In case the rank is not int or sequence referenced is not defined, return NAN
if (std::floor(n) == n && seq->fullName() != nullptr) {
return Float<T>::Builder(seq->valueAtRank<T>(n, m_sequenceContext));
}
} else {
return Float<T>::Builder(NAN);
}