[libreoffice/f17] Resolves: rhbz#894223 crash on export of .docx
Caolán McNamara
caolanm at fedoraproject.org
Fri Jan 18 16:10:56 UTC 2013
commit f7bb572e95be67427c396c02fceb564ee648bba8
Author: Caolán McNamara <caolanm at redhat.com>
Date: Fri Jan 18 15:55:01 2013 +0000
Resolves: rhbz#894223 crash on export of .docx
...o-48569-crash-on-export-to-.docx-of-inlin.patch | 90 ++++++++++++++++++++
libreoffice.spec | 5 +-
2 files changed, 94 insertions(+), 1 deletions(-)
---
diff --git a/0001-Resolves-fdo-48569-crash-on-export-to-.docx-of-inlin.patch b/0001-Resolves-fdo-48569-crash-on-export-to-.docx-of-inlin.patch
new file mode 100644
index 0000000..b6d9d0e
--- /dev/null
+++ b/0001-Resolves-fdo-48569-crash-on-export-to-.docx-of-inlin.patch
@@ -0,0 +1,90 @@
+From a010c4eaea6d6c45621a11d035f76266b0a5147c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Thu, 11 Oct 2012 12:20:07 +0100
+Subject: [PATCH] Resolves: fdo#48569 crash on export to .docx of inline
+ anchored frame
+
+we're currently deferring to the end of the text node to export
+the contents of frames. If its anchored as character then the
+sw::Frame (which is allocated on stack) has gone out of scope
+so this pointer points to junk. Copy it instead.
+
+Sill need to export frames property at some stage.
+
+Change-Id: Ib9f8c6857ce1afe6acba84986b692139e44a7aad
+(cherry picked from commit 60a93729c95d31edab50a905236faa9e38a81556)
+
+Signed-off-by: Eike Rathke <erack at redhat.com>
+---
+ sw/source/filter/ww8/docxattributeoutput.cxx | 16 ++++++++++------
+ sw/source/filter/ww8/docxattributeoutput.hxx | 2 +-
+ 2 files changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
+index 179c2f6..7149e49 100644
+--- a/sw/source/filter/ww8/docxattributeoutput.cxx
++++ b/sw/source/filter/ww8/docxattributeoutput.cxx
+@@ -311,7 +311,10 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT
+ // Write the anchored frame if any
+ if ( m_pParentFrame )
+ {
+- const SwFrmFmt& rFrmFmt = m_pParentFrame->GetFrmFmt( );
++ sw::Frame *pParentFrame = m_pParentFrame;
++ m_pParentFrame = NULL;
++
++ const SwFrmFmt& rFrmFmt = pParentFrame->GetFrmFmt( );
+ const SwNodeIndex* pNodeIndex = rFrmFmt.GetCntnt().GetCntntIdx();
+
+ sal_uLong nStt = pNodeIndex ? pNodeIndex->GetIndex()+1 : 0;
+@@ -319,12 +322,13 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT
+
+ m_rExport.SaveData( nStt, nEnd );
+
+- m_rExport.mpParentFrame = m_pParentFrame;
+- m_pParentFrame = NULL;
++ m_rExport.mpParentFrame = pParentFrame;
+
+ m_rExport.WriteText( );
+
+ m_rExport.RestoreData();
++
++ delete pParentFrame;
+ }
+ }
+
+@@ -2396,8 +2400,8 @@ void DocxAttributeOutput::OutputFlyFrame_Impl( const sw::Frame &rFrame, const Po
+ break;
+ case sw::Frame::eTxtBox:
+ {
+- // The frame output is postponed at the end of the anchor paragraph
+- m_pParentFrame = &rFrame;
++ // The frame output is postponed to the end of the anchor paragraph
++ m_pParentFrame = new sw::Frame(rFrame);
+ }
+ break;
+ case sw::Frame::eOle:
+@@ -4455,7 +4459,7 @@ DocxAttributeOutput::~DocxAttributeOutput()
+ delete m_pEndnotesList, m_pEndnotesList = NULL;
+
+ delete m_pTableWrt, m_pTableWrt = NULL;
+- m_pParentFrame = NULL;
++ delete m_pParentFrame;
+ }
+
+ DocxExport& DocxAttributeOutput::GetExport()
+diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx
+index 4caf047..0d176e1 100644
+--- a/sw/source/filter/ww8/docxattributeoutput.hxx
++++ b/sw/source/filter/ww8/docxattributeoutput.hxx
+@@ -587,7 +587,7 @@ private:
+ // beginning of the next paragraph
+ DocxColBreakStatus m_nColBreakStatus;
+
+- const sw::Frame *m_pParentFrame;
++ sw::Frame *m_pParentFrame;
+ // close of hyperlink needed
+ bool m_closeHyperlinkInThisRun;
+ bool m_closeHyperlinkInPreviousRun;
+--
+1.7.11.7
+
diff --git a/libreoffice.spec b/libreoffice.spec
index 9c8bb4e..38789d1 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -177,6 +177,7 @@ Patch59: 0003-Resolves-fdo-57532-restrict-page-sanity-check-to-non.patch
Patch60: 0001-rhbz-890080-crash-in-SwXTextDocument-getRendererCoun.patch
Patch61: 0001-fdo-59366-Document-Conversion-wizard-enable-StarOffi.patch
Patch62: 0002-Resolves-fdo-58730-workaround-UL-LR-Space-100-proble.patch
+Patch63: 0001-Resolves-fdo-48569-crash-on-export-to-.docx-of-inlin.patch
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
%define instdir %{_libdir}
@@ -1068,7 +1069,8 @@ mv -f redhat.soc extras/source/palettes/standard.soc
%patch59 -p1 -b .Resolves-fdo-57532-restrict-page-sanity-check-to-non.patch
%patch60 -p1 -b .rhbz-890080-crash-in-SwXTextDocument-getRendererCoun.patch
%patch61 -p1 -b .fdo-59366-Document-Conversion-wizard-enable-StarOffi.patch
-%patch62 -p1 -b .Resolves-fdo-58730-workaround-UL-LR-Space-100-proble.patch
+%patch62 -p1 -b .fdo-58730-workaround-UL-LR-Space-100-proble.patch
+%patch63 -p1 -b .fdo-48569-crash-on-export-to-.docx-of-inlin.patch
# TODO: check this
# these are horribly incomplete--empty translations and copied english
@@ -2361,6 +2363,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
- Resolves: rhbz#890080 crash in SwXTextDocument::getRendererCount
- Resolves: fdo#58730 ODF fo:margin 100% bug
- Resolves: fdo#59366: Document Conversion wizard: enable "StarOffice" again
+- Resolves: rhbz#894223 crash on export of .docx
* Thu Dec 06 2012 Stephan Bergmann <sbergman at redhat.com> - 1:3.5.7.2-7
- Resolves: rendering documents in browser plug-in
More information about the scm-commits
mailing list