[Libreoffice-commits] core.git: sw/source
Caolán McNamara
caolanm at redhat.com
Wed Dec 10 01:54:33 PST 2014
sw/source/core/layout/frmtool.cxx | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
New commits:
commit 5141f2e0d89a8a10f0009bea40cc5cd15bf4fcc8
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Dec 10 09:38:35 2014 +0000
Resolves: fdo#53460 crashes after casting SwTxtFrm to unrelated SwLayoutFrm
We still can't use ctrl+up to shrink the height of a row that has a table in
it, but it doesn't crash anymore.
This code presumably isn't truly table-in-table aware and should somehow step
"over" the embedded table and not "into" it, which is what I guess it is doing
here.
Change-Id: I0e4c757c75438a89eb7721de32990f2f21c1ad8b
diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx
index 6173a03..6a9c619 100644
--- a/sw/source/core/layout/frmtool.cxx
+++ b/sw/source/core/layout/frmtool.cxx
@@ -3193,12 +3193,11 @@ static SwTwips lcl_CalcCellRstHeight( SwLayoutFrm *pCell )
{
long nRstHeight = 0;
SwFrm *pLow = pCell->Lower();
- do
- { nRstHeight += ::CalcRowRstHeight( static_cast<SwLayoutFrm*>(pLow) );
+ while (pLow && pLow->IsLayoutFrm())
+ {
+ nRstHeight += ::CalcRowRstHeight(static_cast<SwLayoutFrm*>(pLow));
pLow = pLow->GetNext();
-
- } while ( pLow );
-
+ }
return nRstHeight;
}
}
@@ -3206,11 +3205,11 @@ static SwTwips lcl_CalcCellRstHeight( SwLayoutFrm *pCell )
SwTwips CalcRowRstHeight( SwLayoutFrm *pRow )
{
SwTwips nRstHeight = LONG_MAX;
- SwLayoutFrm *pLow = static_cast<SwLayoutFrm*>(pRow->Lower());
- while ( pLow )
+ SwFrm *pLow = pRow->Lower();
+ while (pLow && pLow->IsLayoutFrm())
{
- nRstHeight = std::min( nRstHeight, ::lcl_CalcCellRstHeight( pLow ) );
- pLow = static_cast<SwLayoutFrm*>(pLow->GetNext());
+ nRstHeight = std::min(nRstHeight, ::lcl_CalcCellRstHeight(static_cast<SwLayoutFrm*>(pLow)));
+ pLow = pLow->GetNext();
}
return nRstHeight;
}
More information about the Libreoffice-commits
mailing list