diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-05-09 14:08:44 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-06-21 10:58:59 +0200 |
commit | 598e5aeb7cdd1ad2ca586bb8159c89755e467c75 (patch) | |
tree | 1893ee72d373f88b0e8b13914378c3de63033db5 /sc | |
parent | 46cd78756f784ce81f8051e211d542f53112d5a3 (diff) |
crashtesting: failure importing gnome545630-1.xlsx
with bt of...
#18 0x00007fb7734e3a9b in ScColContainer::operator[] (this=0x6571840, nIndex=234) at sc/inc/colcontainer.hxx:44
#19 0x00007fb77352daf7 in ScValueIterator::GetFirst (this=0x7fb7629205b0, rValue=@0x7fb762920320: 0, rErr=@0x7fb762920570: NONE)
at sc/source/core/data/dociter.cxx:295
#20 0x00007fb773a04130 in ScInterpreter::GetStVarParams (this=0x35d30d0, bTextAsZero=false, VarResult=
0x7fb773a04dfb <ScInterpreter::<lambda(double, size_t)>::_FUN(double, size_t)>) at sc/source/core/tool/interpr1.cxx:4040
#21 0x00007fb773a04e85 in ScInterpreter::ScStDev (this=0x35d30d0, bTextAsZero=false) at sc/source/core/tool/interpr1.cxx:4180
#22 0x00007fb773a7152d in ScInterpreter::Interpret (this=0x35d30d0) at sc/source/core/tool/interpr4.cxx:4142
#23 0x00007fb77378cbbf in ScFormulaCell::InterpretTail (this=0x6dcf7a0, rContext=..., eTailParam=ScFormulaCell::SCITP_NORMAL)
at sc/source/core/data/formulacell.cxx:1905
#24 0x00007fb77378b8ab in ScFormulaCell::Interpret (this=0x6dcf7a0, nStartOffset=-1, nEndOffset=-1)
at sc/source/core/data/formulacell.cxx:1611
#25 0x00007fb7733f82fe in (anonymous namespace)::CalcAllHandler::operator() (this=0x7fb762920e67, pCell=0x6dcf7a0)
#26 0x00007fb773404240 in sc::EachElem<mdds::mtv::noncopyable_managed_element_block<54, ScFormulaCell>, __gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<ScFormulaCell**, std::__cxx1998::vector<ScFormulaCell*, std::allocator<ScFormulaCell*> > >, std::__debug::vector<ScFormulaCell*> >, mdds::detail::mtv::iterator_value_node<unsigned long, mdds::mtv::base_element_block>, (anonymous namespace)::CalcAllHandler> (rNode=..., rFuncElem=...)
at sc/inc/mtvfunctions.hxx:120
#27 0x00007fb773400dd6 in sc::ProcessElements1<mdds::multi_type_vector<mdds::mtv::custom_block_func3<mdds::mtv::default_element_block<52, svl::SharedString>, mdds::mtv::noncopyable_managed_element_block<53, EditTextObject>, mdds::mtv::noncopyable_managed_element_block<54, ScFormulaCell> >, sc::CellStoreEvent>, mdds::mtv::noncopyable_managed_element_block<54, ScFormulaCell>, (anonymous namespace)::CalcAllHandler, sc::FuncElseNoOp<unsigned long> > (rStore=..., rFuncElem=...,
rFuncElse=...) at sc/inc/mtvfunctions.hxx:310
#28 0x00007fb7733fd4df in sc::ProcessFormula<(anonymous namespace)::CalcAllHandler> (rStore=..., rFunc=...)
at sc/inc/mtvcellfunc.hxx:24
#29 0x00007fb7733faf4f in ScColumn::CalcAll (this=0x6340910) at sc/source/core/data/column.cxx:3482
#30 0x00007fb77384a213 in ScTable::CalcAll (this=0x6571840) at sc/source/core/data/table2.cxx:1882
#31 0x00007fb7735cf141 in ScDocument::CalcAll (this=0x6241ee0) at sc/source/core/data/document.cxx:3955
#32 0x00007fb774062aeb in ScDocShell::DoHardRecalc (this=0x6241e80) at sc/source/ui/docshell/docsh4.cxx:1379
#33 0x00007fb77437a66c in ScModelObj::calculateAll (this=0x3654970) at sc/source/ui/unoobj/docuno.cxx:2254
#34 0x00007fb77b1099ac in gcc3::callVirtualMethod (pThis=0x3654af8, nVtableIndex=4, pRegisterReturn=0x0, pReturnTypeRef=0x1ccf710, bSimpleReturn=true,
pStack=0x7fb7629212f0, nStack=0, pGPR=0x7fb762921420, pFPR=0x7fb762921450)
at bridges/source/cpp_uno/gcc3_linux_x86-64/callvirtualmethod.cxx:133
Change-Id: Ica4c9e9860768d9c84be89be36644126095f62f3
Reviewed-on: https://gerrit.libreoffice.org/72048
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/core/data/dociter.cxx | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx index be38db769be4..9772d7e82073 100644 --- a/sc/source/core/data/dociter.cxx +++ b/sc/source/core/data/dociter.cxx @@ -152,15 +152,17 @@ bool ScValueIterator::GetThis(double& rValue, FormulaError& rErr) { while (true) { - bool bNextColumn = maCurPos.first == mpCells->end(); + bool bNextColumn = !mpCells || maCurPos.first == mpCells->end(); if (!bNextColumn) { if (GetRow() > maEndPos.Row()) bNextColumn = true; } - ScColumn* pCol = &(pDoc->maTabs[mnTab])->aCol[mnCol]; - if (bNextColumn) + ScColumn* pCol; + if (!bNextColumn) + pCol = &(pDoc->maTabs[mnTab])->aCol[mnCol]; + else { // Find the next available column. do @@ -292,8 +294,14 @@ bool ScValueIterator::GetFirst(double& rValue, FormulaError& rErr) pAttrArray = nullptr; nAttrEndRow = 0; - mpCells = &pTab->aCol[maStartPos.Col()].maCells; - maCurPos = mpCells->position(maStartPos.Row()); + auto nCol = maStartPos.Col(); + if (nCol < pTab->GetAllocatedColumnsCount()) + { + mpCells = &pTab->aCol[nCol].maCells; + maCurPos = mpCells->position(maStartPos.Row()); + } + else + mpCells = nullptr; return GetThis(rValue, rErr); } |