[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[SCM] LibreOffice packaging repository branch, ubuntu-precise-3.5, updated. libreoffice_3.5.2_rc2-1-164-g10e447e



The following commit has been merged in the ubuntu-precise-3.5 branch:
commit ce3e84b72b98796c3ae6d13c5ab537c44d1e36a5
Author: Bjoern Michaelsen <bjoern.michaelsen@canonical.com>
Date:   Wed Jan 9 15:03:50 2013 +0100

    lp#1097760: better fix for DOCX table import crash
    
    fix lp#1097760 containers for backport

diff --git a/changelog b/changelog
index c507e77..c4d572c 100644
--- a/changelog
+++ b/changelog
@@ -14,7 +14,8 @@ libreoffice (1:3.5.7-0ubuntu3) UNRELEASED; urgency=low
   * backport Clipboard must be disposed before Selection (LP: #1097727) 
   * backport fix default hori/vert frame anchor during RTF import (LP: #1097735) 
   * backport Load Java scripts with class loaders (LP: #1097744)
-  * backport Do not consider timestamp differences as corruption (LP: #1097748) 
+  * backport Do not consider timestamp differences as corruption (LP: #1097748)
+  * backport sw: better fix for DOCX table import crash (LP: #1097760)
 
  -- Bjoern Michaelsen <bjoern.michaelsen@canonical.com>  Tue, 08 Jan 2013 17:09:36 +0100
 
diff --git a/patches/lp-1097760-rhbz-820283-fdo-55462-sw-better-fix-for-DOCX-table-i.diff b/patches/lp-1097760-rhbz-820283-fdo-55462-sw-better-fix-for-DOCX-table-i.diff
new file mode 100644
index 0000000..67adc6b
--- /dev/null
+++ b/patches/lp-1097760-rhbz-820283-fdo-55462-sw-better-fix-for-DOCX-table-i.diff
@@ -0,0 +1,97 @@
+From 8adcdcac0b0c65e3d22610ae0df68e180bf59022 Mon Sep 17 00:00:00 2001
+From: Michael Stahl <mstahl@redhat.com>
+Date: Thu, 4 Oct 2012 19:17:56 +0200
+Subject: [PATCH 09/14] rhbz#820283, fdo#55462: sw: better fix for DOCX table
+ import crash:
+
+The fix in 6d2e09db4a677068095b0bebd08fbbb96620d60c is completely bogus.
+Only vertically merged boxes result in dummy boxes with negative span,
+while horizontally merged boxes result in different numbers of boxes per
+line.  So instead of inserting boxes, adjust the width of the last box
+in rows that are missing boxes, such that all lines have the same width.
+
+(cherry picked from commit 4113d9664c60d004474dfc1cffbcd7dc50fa6dc4)
+
+Conflicts:
+	sw/source/core/docnode/ndtbl.cxx
+
+Change-Id: I4e90e852b314bf6f7885bde7b450dab7c668469e
+Reviewed-on: https://gerrit.libreoffice.org/764
+Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org>
+Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
+---
+ sw/source/core/docnode/ndtbl.cxx |   51 ++++++++++++++++++--------------------
+ 1 file changed, 24 insertions(+), 27 deletions(-)
+
+diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
+index ca006bc..248378a 100644
+--- a/sw/source/core/docnode/ndtbl.cxx
++++ b/sw/source/core/docnode/ndtbl.cxx
+@@ -1260,6 +1260,29 @@ SwNodeRange * SwNodes::ExpandRangeForTableBox(const SwNodeRange & rRange)
+     return pResult;
+ }
+ 
++static void
++lcl_SetTableBoxWidths2(SwTable & rTable, size_t const nMaxBoxes,
++        SwTableBoxFmt & rBoxFmt, SwDoc & rDoc)
++{
++    // rhbz#820283, fdo#55462: set default box widths so table width is covered
++    SwTableLines & rLines = rTable.GetTabLines();
++    for (size_t nTmpLine = 0; nTmpLine < rLines.Count(); ++nTmpLine)
++    {
++        SwTableBoxes & rBoxes = rLines[nTmpLine]->GetTabBoxes();
++        size_t const nMissing = nMaxBoxes - rBoxes.Count();
++        if (nMissing)
++        {
++            // default width for box at the end of an incomplete line
++            SwTableBoxFmt *const pNewFmt = rDoc.MakeTableBoxFmt();
++            pNewFmt->SetFmtAttr( SwFmtFrmSize(ATT_VAR_SIZE,
++                        (USHRT_MAX / nMaxBoxes) * (nMissing + 1)) );
++            pNewFmt->Add(rBoxes[rBoxes.Count() - 1]);
++        }
++    }
++    // default width for all boxes not at the end of an incomplete line
++    rBoxFmt.SetFmtAttr(SwFmtFrmSize(ATT_VAR_SIZE, USHRT_MAX / nMaxBoxes));
++}
++
+ SwTableNode* SwNodes::TextToTable( const SwNodes::TableRanges_t & rTableNodes,
+                                     SwTableFmt* pTblFmt,
+                                     SwTableLineFmt* pLineFmt,
+@@ -1371,33 +1394,7 @@ SwTableNode* SwNodes::TextToTable( const SwNodes::TableRanges_t & rTableNodes,
+             nMaxBoxes = nBoxes;
+     }
+ 
+-    // die Tabelle ausgleichen, leere Sections einfuegen
+-    sal_uInt16 n;
+-
+-    if( !aPosArr.empty() )
+-    {
+-        SwTableLines& rLns = pTable->GetTabLines();
+-        sal_uInt16 nLastPos = 0;
+-        for( n = 0; n < aPosArr.size(); ++n )
+-        {
+-            SwTableBoxFmt *pNewFmt = pDoc->MakeTableBoxFmt();
+-            pNewFmt->SetFmtAttr( SwFmtFrmSize( ATT_VAR_SIZE,
+-                                                aPosArr[ n ] - nLastPos ));
+-            for( sal_uInt16 nLines2 = 0; nLines2 < rLns.Count(); ++nLines2 )
+-                //JP 24.06.98: hier muss ein Add erfolgen, da das BoxFormat
+-                //              von der rufenden Methode noch gebraucht wird!
+-                pNewFmt->Add( rLns[ nLines2 ]->GetTabBoxes()[ n ] );
+-
+-            nLastPos = aPosArr[ n ];
+-        }
+-
+-        // damit die Tabelle die richtige Groesse bekommt, im BoxFormat die
+-        // Groesse nach "oben" transportieren.
+-        OSL_ENSURE( !pBoxFmt->GetDepends(), "wer ist in dem Format noch angemeldet" );
+-        pBoxFmt->SetFmtAttr( SwFmtFrmSize( ATT_VAR_SIZE, nLastPos ));
+-    }
+-    else
+-        pBoxFmt->SetFmtAttr( SwFmtFrmSize( ATT_VAR_SIZE, USHRT_MAX / nMaxBoxes ));
++    lcl_SetTableBoxWidths2(*pTable, nMaxBoxes, *pBoxFmt, *pDoc);
+ 
+     // das wars doch wohl ??
+     return pTblNd;
+-- 
+1.7.10.4
+
diff --git a/patches/series b/patches/series
index 4908b91..0561256 100644
--- a/patches/series
+++ b/patches/series
@@ -50,3 +50,4 @@ lp-1097727-rhbz-846775-Clipboard-must-be-disposed-befo.diff
 lp-1097735-fdo-48442-fix-default-hori-vert-frame-anchor-during-.diff
 lp-1097744-fdo-49517-Revert-fdo-46102-Load-Java-scripts-with-cl.diff
 lp-1097748-fdo-49819-fdo-54609-Do-not-consider-timestamp-differ.diff
+lp-1097760-rhbz-820283-fdo-55462-sw-better-fix-for-DOCX-table-i.diff

-- 
LibreOffice packaging repository


Reply to: