[Libreoffice-commits] core.git: Branch 'libreoffice-4-0' - sw/source
Michael Stahl
mstahl at redhat.com
Mon Feb 18 01:55:11 PST 2013
sw/source/core/doc/doclay.cxx | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
New commits:
commit 838a3ae5e7e2efedfbd07734aedb85c7ec8f2356
Author: Michael Stahl <mstahl at redhat.com>
Date: Thu Feb 14 23:02:35 2013 +0100
sw: do not crash when it's not possible to insert fly
Change-Id: Idfcf54013107ba6b7ce3de0d0bddbef306698f33
(cherry picked from commit 5a80c24b145c8efe0dd384ef88e7d31173522fb8)
Reviewed-on: https://gerrit.libreoffice.org/2176
Reviewed-by: Miklos Vajna <vmiklos at suse.cz>
Tested-by: Miklos Vajna <vmiklos at suse.cz>
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index f31c998..3bac734 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -654,7 +654,11 @@ SwFlyFrmFmt* SwDoc::_MakeFlySection( const SwPosition& rAnchPos,
if (pTxtNode != NULL)
{
SwFmtFlyCnt aFmt( pFmt );
- pTxtNode->InsertItem( aFmt, nStt, nStt );
+ bool const bSuccess( pTxtNode->InsertItem(aFmt, nStt, nStt) );
+ if (!bSuccess) // may fail if there's no space left or header/ftr
+ { // pFmt is dead now
+ return 0;
+ }
}
}
@@ -740,7 +744,9 @@ SwFlyFrmFmt* SwDoc::MakeFlySection( RndStdIds eAnchorType,
if (bCalledFromShell && !lcl_IsItemSet(*pNewTxtNd, RES_PARATR_ADJUST) &&
SFX_ITEM_SET == pAnchorNode->GetSwAttrSet().
GetItemState(RES_PARATR_ADJUST, sal_True, &pItem))
+ {
static_cast<SwCntntNode *>(pNewTxtNd)->SetAttr(*pItem);
+ }
pFmt = _MakeFlySection( *pAnchorPos, *pNewTxtNd,
eAnchorType, pFlySet, pFrmFmt );
@@ -941,8 +947,13 @@ SwDrawFrmFmt* SwDoc::Insert( const SwPaM &rRg,
{
xub_StrLen nStt = rRg.GetPoint()->nContent.GetIndex();
SwFmtFlyCnt aFmt( pFmt );
- rRg.GetPoint()->nNode.GetNode().GetTxtNode()->InsertItem(
- aFmt, nStt, nStt );
+ bool const bSuccess( // may fail if there's no space left
+ rRg.GetPoint()->nNode.GetNode().GetTxtNode()->InsertItem(
+ aFmt, nStt, nStt));
+ if (!bSuccess)
+ { // pFmt is dead now
+ return 0;
+ }
}
SwDrawContact* pContact = new SwDrawContact( pFmt, &rDrawObj );
More information about the Libreoffice-commits
mailing list