[Libreoffice-commits] core.git: Branch 'libreoffice-4-3' - sw/source

Caolán McNamara caolanm at redhat.com
Fri Dec 12 01:27:23 PST 2014


 sw/source/core/layout/frmtool.cxx |   17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

New commits:
commit 793580e9625fd0a86f0e88669ac2db9168874ff7
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.
    
    (cherry picked from commit 5141f2e0d89a8a10f0009bea40cc5cd15bf4fcc8)
    
    Conflicts:
    	sw/source/core/layout/frmtool.cxx
    
    Change-Id: I0e4c757c75438a89eb7721de32990f2f21c1ad8b
    (cherry picked from commit c1a5e49bdb0d6c1533d33520ea7c01a660a5d1f4)
    Reviewed-on: https://gerrit.libreoffice.org/13412
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx
index 3418f3d..d7f6588 100644
--- a/sw/source/core/layout/frmtool.cxx
+++ b/sw/source/core/layout/frmtool.cxx
@@ -3129,12 +3129,11 @@ static SwTwips lcl_CalcCellRstHeight( SwLayoutFrm *pCell )
     {
         long nRstHeight = 0;
         SwFrm *pLow = pCell->Lower();
-        do
-        {   nRstHeight += ::CalcRowRstHeight( (SwLayoutFrm*)pLow );
+        while (pLow && pLow->IsLayoutFrm())
+        {
+            nRstHeight += ::CalcRowRstHeight(static_cast<SwLayoutFrm*>(pLow));
             pLow = pLow->GetNext();
-
-        } while ( pLow );
-
+        }
         return nRstHeight;
     }
 }
@@ -3142,11 +3141,11 @@ static SwTwips lcl_CalcCellRstHeight( SwLayoutFrm *pCell )
 SwTwips CalcRowRstHeight( SwLayoutFrm *pRow )
 {
     SwTwips nRstHeight = LONG_MAX;
-    SwLayoutFrm *pLow = (SwLayoutFrm*)pRow->Lower();
-    while ( pLow )
+    SwFrm *pLow = pRow->Lower();
+    while (pLow && pLow->IsLayoutFrm())
     {
-        nRstHeight = std::min( nRstHeight, ::lcl_CalcCellRstHeight( pLow ) );
-        pLow = (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