Resolves: tdf#148163 Preserve names of bad cell reference input again
A regression of
commit e247262327d04ad9933f4af354050f4420c6e303
CommitDate: Tue Jul 30 23:49:55 2013 -0400
More on avoiding direct access to data members.
that changed, for example, invalid sheet references
- aRef.nTab = MAXTAB+3;
+ aRef.SetTabDeleted(true);
The then following
commit 8a19af57bbcc57a02a7d87c6408d1e3212a6deba
CommitDate: Tue Jul 30 23:50:03 2013 -0400
Now nobody accesses reference members directly. Make them private.
changed ScSingleRefData::Valid()
- return nCol >= 0 && nCol <= MAXCOL &&
- nRow >= 0 && nRow <= MAXROW &&
- nTab >= 0 && nTab <= MAXTAB;
+ return ColValid() && RowValid() && TabValid();
without taking the deleted flags into account, where previous to
commit e247262327d04ad9933f4af354050f4420c6e303 nTab > MAXTAB
fulfilled the condition of not valid.
This makes it necessary to adjust the
TestFormula::testFuncRangeOp() test case that relied on the broken
behaviour.
Change-Id: I42e769ca0d56a2eb786bb6f65917f0c15d082763
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135453
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit 104596d005b32bd2bba15554e8c9ae740327aa46)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135379
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index 5518342..dce22b2 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -7363,8 +7363,8 @@ void TestFormula::testFuncRangeOp()
// have to be adapted.
aPos.IncRow();
m_pDoc->SetString( aPos, "=SUM(B1:Sheet2.B2:Sheet3.B3)");
ASSERT_FORMULA_EQUAL(*m_pDoc, aPos, "SUM(#REF!.B2:#REF!.B3)", "Wrong formula.");
CPPUNIT_ASSERT_EQUAL( OUString("#REF!"), m_pDoc->GetString(aPos));
ASSERT_FORMULA_EQUAL(*m_pDoc, aPos, "SUM(b1:sheet2.b2:Sheet3.B3)", "Wrong formula.");
CPPUNIT_ASSERT_EQUAL( OUString("#NAME?"), m_pDoc->GetString(aPos));
aPos.IncRow();
m_pDoc->SetString( aPos, "=SUM(Sheet1.B1:Sheet3.B2:Sheet2.B3)");
diff --git a/sc/source/core/tool/refdata.cxx b/sc/source/core/tool/refdata.cxx
index 59a224d..9cdadc5 100644
--- a/sc/source/core/tool/refdata.cxx
+++ b/sc/source/core/tool/refdata.cxx
@@ -129,7 +129,7 @@ bool ScSingleRefData::IsDeleted() const
bool ScSingleRefData::Valid(const ScDocument& rDoc) const
{
return ColValid(rDoc) && RowValid(rDoc) && TabValid();
return !IsDeleted() && ColValid(rDoc) && RowValid(rDoc) && TabValid();
}
bool ScSingleRefData::ColValid(const ScDocument& rDoc) const