sw/source/core/unocore/unotbl.cxx | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-)
New commits: commit 30be37d5919024992a81603494a81f0fb1d8f775 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Tue Aug 14 12:30:36 2018 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Wed Aug 15 17:30:54 2018 +0200 tdf#117127 crash on inspecting value describing a table since... commit f86d0413f7cedf096b285c2eb6698653dd99c21e Date: Mon Mar 30 01:26:21 2015 +0200 SwXCellRange:: and SwXTextTable::getDataArray() do the same which used to have more checks than its replacement Change-Id: Id931882ef7c749ffa18ef3474e3e661ba8614ab0 Reviewed-on: https://gerrit.libreoffice.org/58978 Tested-by: Jenkins Tested-by: Xisco Faulí <xiscofa...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/source/core/unocore/unotbl.cxx b/sw/source/core/unocore/unotbl.cxx index de6adc6a2130..d16986b65248 100644 --- a/sw/source/core/unocore/unotbl.cxx +++ b/sw/source/core/unocore/unotbl.cxx @@ -2316,7 +2316,7 @@ uno::Sequence< uno::Sequence< uno::Any > > SAL_CALL SwXTextTable::getDataArray() std::pair<sal_uInt16, sal_uInt16> const RowsAndColumns(SwXTextTable::Impl::ThrowIfComplex(*this)); uno::Reference<sheet::XCellRangeData> const xAllRange( getCellRangeByPosition(0, 0, RowsAndColumns.second-1, RowsAndColumns.first-1), - uno::UNO_QUERY); + uno::UNO_QUERY_THROW); return xAllRange->getDataArray(); } @@ -2326,7 +2326,7 @@ void SAL_CALL SwXTextTable::setDataArray(const uno::Sequence< uno::Sequence< uno std::pair<sal_uInt16, sal_uInt16> const RowsAndColumns(SwXTextTable::Impl::ThrowIfComplex(*this)); uno::Reference<sheet::XCellRangeData> const xAllRange( getCellRangeByPosition(0, 0, RowsAndColumns.second-1, RowsAndColumns.first-1), - uno::UNO_QUERY); + uno::UNO_QUERY_THROW); return xAllRange->setDataArray(rArray); } @@ -2336,7 +2336,7 @@ uno::Sequence< uno::Sequence< double > > SwXTextTable::getData() std::pair<sal_uInt16, sal_uInt16> const RowsAndColumns(SwXTextTable::Impl::ThrowIfComplex(*this)); uno::Reference<chart::XChartDataArray> const xAllRange( getCellRangeByPosition(0, 0, RowsAndColumns.second-1, RowsAndColumns.first-1), - uno::UNO_QUERY); + uno::UNO_QUERY_THROW); static_cast<SwXCellRange*>(xAllRange.get())->SetLabels( m_pImpl->m_bFirstRowAsLabel, m_pImpl->m_bFirstColumnAsLabel); return xAllRange->getData(); @@ -2348,7 +2348,7 @@ void SwXTextTable::setData(const uno::Sequence< uno::Sequence< double > >& rData std::pair<sal_uInt16, sal_uInt16> const RowsAndColumns(SwXTextTable::Impl::ThrowIfComplex(*this)); uno::Reference<chart::XChartDataArray> const xAllRange( getCellRangeByPosition(0, 0, RowsAndColumns.second-1, RowsAndColumns.first-1), - uno::UNO_QUERY); + uno::UNO_QUERY_THROW); static_cast<SwXCellRange*>(xAllRange.get())->SetLabels( m_pImpl->m_bFirstRowAsLabel, m_pImpl->m_bFirstColumnAsLabel); xAllRange->setData(rData); @@ -2362,7 +2362,7 @@ uno::Sequence<OUString> SwXTextTable::getRowDescriptions() std::pair<sal_uInt16, sal_uInt16> const RowsAndColumns(SwXTextTable::Impl::ThrowIfComplex(*this)); uno::Reference<chart::XChartDataArray> const xAllRange( getCellRangeByPosition(0, 0, RowsAndColumns.second-1, RowsAndColumns.first-1), - uno::UNO_QUERY); + uno::UNO_QUERY_THROW); static_cast<SwXCellRange*>(xAllRange.get())->SetLabels( m_pImpl->m_bFirstRowAsLabel, m_pImpl->m_bFirstColumnAsLabel); return xAllRange->getRowDescriptions(); @@ -2374,7 +2374,7 @@ void SwXTextTable::setRowDescriptions(const uno::Sequence<OUString>& rRowDesc) std::pair<sal_uInt16, sal_uInt16> const RowsAndColumns(SwXTextTable::Impl::ThrowIfComplex(*this)); uno::Reference<chart::XChartDataArray> const xAllRange( getCellRangeByPosition(0, 0, RowsAndColumns.second-1, RowsAndColumns.first-1), - uno::UNO_QUERY); + uno::UNO_QUERY_THROW); static_cast<SwXCellRange*>(xAllRange.get())->SetLabels( m_pImpl->m_bFirstRowAsLabel, m_pImpl->m_bFirstColumnAsLabel); xAllRange->setRowDescriptions(rRowDesc); @@ -2386,7 +2386,7 @@ uno::Sequence<OUString> SwXTextTable::getColumnDescriptions() std::pair<sal_uInt16, sal_uInt16> const RowsAndColumns(SwXTextTable::Impl::ThrowIfComplex(*this)); uno::Reference<chart::XChartDataArray> const xAllRange( getCellRangeByPosition(0, 0, RowsAndColumns.second-1, RowsAndColumns.first-1), - uno::UNO_QUERY); + uno::UNO_QUERY_THROW); static_cast<SwXCellRange*>(xAllRange.get())->SetLabels( m_pImpl->m_bFirstRowAsLabel, m_pImpl->m_bFirstColumnAsLabel); return xAllRange->getColumnDescriptions(); @@ -2398,7 +2398,7 @@ void SwXTextTable::setColumnDescriptions(const uno::Sequence<OUString>& rColumnD std::pair<sal_uInt16, sal_uInt16> const RowsAndColumns(SwXTextTable::Impl::ThrowIfComplex(*this)); uno::Reference<chart::XChartDataArray> const xAllRange( getCellRangeByPosition(0, 0, RowsAndColumns.second-1, RowsAndColumns.first-1), - uno::UNO_QUERY); + uno::UNO_QUERY_THROW); static_cast<SwXCellRange*>(xAllRange.get())->SetLabels( m_pImpl->m_bFirstRowAsLabel, m_pImpl->m_bFirstColumnAsLabel); return xAllRange->setColumnDescriptions(rColumnDesc); @@ -3661,7 +3661,7 @@ SwXCellRange::getData() uno::Reference<chart::XChartDataArray> const xDataRange( getCellRangeByPosition((m_pImpl->m_bFirstColumnAsLabel) ? 1 : 0, (m_pImpl->m_bFirstRowAsLabel) ? 1 : 0, - nColCount-1, nRowCount-1), uno::UNO_QUERY); + nColCount-1, nRowCount-1), uno::UNO_QUERY_THROW); return xDataRange->getData(); } uno::Sequence< uno::Sequence< double > > vRows(nRowCount); @@ -3694,7 +3694,7 @@ SwXCellRange::setData(const uno::Sequence< uno::Sequence<double> >& rData) uno::Reference<chart::XChartDataArray> const xDataRange( getCellRangeByPosition((m_pImpl->m_bFirstColumnAsLabel) ? 1 : 0, (m_pImpl->m_bFirstRowAsLabel) ? 1 : 0, - nColCount-1, nRowCount-1), uno::UNO_QUERY); + nColCount-1, nRowCount-1), uno::UNO_QUERY_THROW); return xDataRange->setData(rData); } lcl_EnsureCoreConnected(m_pImpl->GetFrameFormat(), static_cast<cppu::OWeakObject*>(this)); @@ -3773,6 +3773,8 @@ void SwXCellRange::Impl::SetLabelDescriptions(SwXCellRange & rThis, if(!nRight && !nBottom) throw uno::RuntimeException("Table too complex", static_cast<cppu::OWeakObject*>(&rThis)); auto xLabelRange(rThis.getCellRangeByPosition(nLeft, nTop, nRight, nBottom)); + if (!xLabelRange.is()) + throw uno::RuntimeException("Missing Cell Range", static_cast<cppu::OWeakObject*>(&rThis)); auto vCells(static_cast<SwXCellRange*>(xLabelRange.get())->GetCells()); if (sal::static_int_cast<sal_uInt32>(rDesc.getLength()) != vCells.size()) throw uno::RuntimeException("Too few or too many descriptions", static_cast<cppu::OWeakObject*>(&rThis)); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits