diff options
author | Michael Stahl <mstahl@redhat.com> | 2016-08-30 21:17:32 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-08-31 10:20:10 +0000 |
commit | ad95040240bb8fe1fe56c6143cffcebf51b8b96f (patch) | |
tree | c71cf66f91f18ce8e5557a5074b8c6bd0c7e480e | |
parent | 76538731fb60c8563c5538101bdafe5434b681b8 (diff) |
Revert "fftester: non-contiguous cells"
This reverts commit 9accbfa0a52433cf03fe186fc69334d387981eb9.
... and the code change of "avoid crashing on load of fdo54724-1.rtf"
commit 4ee3eabd0f058b26544c84b2b5aaf5478d921817.
It's much simpler to detect early in convertToTable that there is a
row with no cells in it, which should not be allowed.
Change-Id: Iff6d235b29514edd57cc55addeefb24242595d88
(cherry picked from commit dc83b3ae470914dbcb08fe1f0a4a4e1a1d3d8e19)
Reviewed-on: https://gerrit.libreoffice.org/28512
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
(cherry picked from commit 217640264a62bd78b153b131b2cd158d4f8da620)
Reviewed-on: https://gerrit.libreoffice.org/28539
-rw-r--r-- | sw/qa/core/data/rtf/fail/table-1.rtf | bin | 0 -> 849 bytes | |||
-rw-r--r-- | sw/source/core/unocore/unotext.cxx | 23 |
2 files changed, 13 insertions, 10 deletions
diff --git a/sw/qa/core/data/rtf/fail/table-1.rtf b/sw/qa/core/data/rtf/fail/table-1.rtf Binary files differnew file mode 100644 index 000000000000..c333a1037887 --- /dev/null +++ b/sw/qa/core/data/rtf/fail/table-1.rtf diff --git a/sw/source/core/unocore/unotext.cxx b/sw/source/core/unocore/unotext.cxx index 08213898f90b..454dda669c5b 100644 --- a/sw/source/core/unocore/unotext.cxx +++ b/sw/source/core/unocore/unotext.cxx @@ -2236,20 +2236,23 @@ throw (lang::IllegalArgumentException, uno::RuntimeException, std::exception) pTableRanges[nRow].getConstArray(); const sal_Int32 nCells(pTableRanges[nRow].getLength()); + if (0 == nCells) // this would lead to no pLastCell below + { // and make it impossible to detect node gaps + bExcept = true; + break; + } + for (sal_Int32 nCell = 0; nCell < nCells; ++nCell) { - SwNodeRange *pLastCell; - if (nCell == 0 && nRow == 0) - { - pLastCell = nullptr; - } - else - { - std::vector<SwNodeRange>& rRowOfPrevCell = nCell ? aRowNodes : *aTableNodes.rbegin(); - pLastCell = !rRowOfPrevCell.empty() ? &*rRowOfPrevCell.rbegin() : nullptr; - } + SwNodeRange *const pLastCell( + (nCell == 0) + ? ((nRow == 0) + ? nullptr + : &*aTableNodes.rbegin()->rbegin()) + : &*aRowNodes.rbegin()); m_pImpl->ConvertCell(pRow[nCell], aRowNodes, pLastCell, bExcept); } + assert(bExcept || !aRowNodes.empty()); aTableNodes.push_back(aRowNodes); } |