diff options
Diffstat (limited to 'sc/source/ui/view/viewdata.cxx')
-rw-r--r-- | sc/source/ui/view/viewdata.cxx | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx index d2e5b461e9ed..b1b092d85fd3 100644 --- a/sc/source/ui/view/viewdata.cxx +++ b/sc/source/ui/view/viewdata.cxx @@ -903,9 +903,15 @@ void ScViewData::InsertTabs( SCTAB nTab, SCTAB nNewSheets ) void ScViewData::DeleteTab( SCTAB nTab ) { + assert(nTab < static_cast<SCTAB>(maTabData.size())); delete maTabData.at(nTab); - maTabData.erase(maTabData.begin() + nTab); + + if (static_cast<size_t>(nTabNo) >= maTabData.size()) + { + EnsureTabDataSize(1); + nTabNo = maTabData.size() - 1; + } UpdateCurrentTab(); mpMarkData->DeleteTab( nTab ); } @@ -919,6 +925,11 @@ void ScViewData::DeleteTabs( SCTAB nTab, SCTAB nSheets ) } maTabData.erase(maTabData.begin() + nTab, maTabData.begin()+ nTab+nSheets); + if (static_cast<size_t>(nTabNo) >= maTabData.size()) + { + EnsureTabDataSize(1); + nTabNo = maTabData.size() - 1; + } UpdateCurrentTab(); } |