diff --git a/0001-Related-i58612-don-t-crash-anyway.patch b/0001-Related-i58612-don-t-crash-anyway.patch new file mode 100644 index 0000000..47c81b9 --- /dev/null +++ b/0001-Related-i58612-don-t-crash-anyway.patch @@ -0,0 +1,102 @@ +From 3524727db0f3cfecf3a47046795c527808c10c3e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Thu, 23 Jun 2011 15:14:00 +0100 +Subject: [PATCH] Related: #i58612# don't crash anyway + +--- + sw/source/core/text/frmform.cxx | 11 ++++++----- + sw/source/core/text/inftxt.cxx | 3 ++- + sw/source/core/text/txtfly.cxx | 6 ++++-- + sw/source/core/text/txtfrm.cxx | 7 +++++-- + 4 files changed, 17 insertions(+), 10 deletions(-) + +diff --git a/sw/source/core/text/frmform.cxx b/sw/source/core/text/frmform.cxx +index 6a4be32..6b3b9cc 100755 +--- a/sw/source/core/text/frmform.cxx ++++ b/sw/source/core/text/frmform.cxx +@@ -1463,10 +1463,11 @@ void SwTxtFrm::_Format( SwTxtFormatter &rLine, SwTxtFormatInfo &rInf, + + if( IsFollow() && IsFieldFollow() && rLine.GetStart() == GetOfst() ) + { +- const SwLineLayout* pLine; ++ SwTxtFrm *pMaster = FindMaster(); ++ OSL_ENSURE( pMaster, "SwTxtFrm::Format: homeless follow" ); ++ const SwLineLayout* pLine=NULL; ++ if (pMaster) + { +- SwTxtFrm *pMaster = FindMaster(); +- OSL_ENSURE( pMaster, "SwTxtFrm::Format: homeless follow" ); + if( !pMaster->HasPara() ) + pMaster->GetFormatted(); + SwTxtSizeInfo aInf( pMaster ); +@@ -1474,8 +1475,8 @@ void SwTxtFrm::_Format( SwTxtFormatter &rLine, SwTxtFormatInfo &rInf, + aMasterLine.Bottom(); + pLine = aMasterLine.GetCurr(); + } +- SwLinePortion* pRest = +- rLine.MakeRestPortion( pLine, GetOfst() ); ++ SwLinePortion* pRest = pLine ? ++ rLine.MakeRestPortion(pLine, GetOfst()) : NULL; + if( pRest ) + rInf.SetRest( pRest ); + else +diff --git a/sw/source/core/text/inftxt.cxx b/sw/source/core/text/inftxt.cxx +index 570b3c6..a76d746 100644 +--- a/sw/source/core/text/inftxt.cxx ++++ b/sw/source/core/text/inftxt.cxx +@@ -1465,7 +1465,8 @@ void SwTxtFormatInfo::Init() + if ( GetTxtFrm()->IsFollow() ) + { + const SwTxtFrm* pMaster = GetTxtFrm()->FindMaster(); +- const SwLinePortion* pTmpPara = pMaster->GetPara(); ++ OSL_ENSURE(pMaster, "pTxtFrm without Master"); ++ const SwLinePortion* pTmpPara = pMaster ? pMaster->GetPara() : NULL; + + // there is a master for this follow and the master does not have + // any contents (especially it does not have a number portion) +diff --git a/sw/source/core/text/txtfly.cxx b/sw/source/core/text/txtfly.cxx +index 2d21ece..fbff110 100644 +--- a/sw/source/core/text/txtfly.cxx ++++ b/sw/source/core/text/txtfly.cxx +@@ -890,7 +890,7 @@ sal_Bool SwTxtFly::IsAnyObj( const SwRect &rRect ) const + const SwCntntFrm* SwTxtFly::_GetMaster() + { + pMaster = pCurrFrm; +- while( pMaster->IsFollow() ) ++ while( pMaster && pMaster->IsFollow() ) + pMaster = (SwCntntFrm*)pMaster->FindMaster(); + return pMaster; + } +@@ -1551,7 +1551,9 @@ SwAnchoredObjList* SwTxtFly::InitAnchoredObjList() + SwTwips SwTxtFly::CalcMinBottom() const + { + SwTwips nRet = 0; +- const SwSortedObjs *pDrawObj = GetMaster()->GetDrawObjs(); ++ const SwCntntFrm *pLclMaster = GetMaster(); ++ OSL_ENSURE(pLclMaster, "SwTxtFly without master"); ++ const SwSortedObjs *pDrawObj = pLclMaster ? pLclMaster->GetDrawObjs() : NULL; + const sal_uInt32 nCount = pDrawObj ? pDrawObj->Count() : 0; + if( nCount ) + { +diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx +index 6e5f764..9e4a237 100644 +--- a/sw/source/core/text/txtfrm.cxx ++++ b/sw/source/core/text/txtfrm.cxx +@@ -646,9 +646,12 @@ void SwTxtFrm::HideAndShowObjects() + } + } + +- if ( IsFollow() ) ++ if (IsFollow()) + { +- FindMaster()->HideAndShowObjects(); ++ SwTxtFrm *pMaster = FindMaster(); ++ OSL_ENSURE(pMaster, "SwTxtFrm without master"); ++ if (pMaster) ++ pMaster->HideAndShowObjects(); + } + } + +-- +1.7.6.4 + diff --git a/libreoffice.spec b/libreoffice.spec index bcc966c..863fc0e 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -139,6 +139,7 @@ Patch34: 0001-wpsimport-writerperfect.diff-WPS-Import-filter-core-.patch Patch35: libreoffice-gcj.patch Patch36: libreoffice-rhel6poppler.patch %endif +Patch37: 0001-Related-i58612-don-t-crash-anyway.patch %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %define instdir %{_libdir} @@ -821,6 +822,7 @@ mv -f redhat.soc extras/source/palettes/standard.soc %patch35 -p1 -b .gcj.patch %patch36 -p0 -b .rhel6poppler.patch %endif +%patch37 -p1 -b .i58612-don-t-crash-anyway.patch # these are horribly incomplete--empty translations and copied english # strings with spattering of translated strings @@ -2124,6 +2126,7 @@ update-desktop-database %{_datadir}/applications &> /dev/null || : %changelog * Thu Nov 10 2011 Caolán McNamara - 3.4.4.2-3 +- Related: fdo#42534 0001-Related-i58612-don-t-crash-anyway.patch * Thu Nov 10 2011 Stephan Bergmann - 3.4.4.2-2 - Patch to backport reading AES-encrypted ODF 1.2 documents