[Libreoffice-commits] core.git: Branch 'libreoffice-4-1' - sw/source
Michael Stahl
mstahl at redhat.com
Fri Dec 6 01:07:54 PST 2013
sw/source/core/frmedt/fecopy.cxx | 23 ++++++++++-------------
1 file changed, 10 insertions(+), 13 deletions(-)
New commits:
commit 640e8abbff03f7f242c0c0b9d73ffd2eda3c4e35
Author: Michael Stahl <mstahl at redhat.com>
Date: Thu Dec 5 21:58:11 2013 +0100
fdo#71892: sw: fix crash when pasting table in footnote
The code that updates RSIDs assumes that the number of nodes copied is
the same as the number of nodes inserted, which is not true when pasting
a table into a footnote because Writer can't do that, hence all table
nodes are missing. Count inserted nodes instead.
(regression from 062eaeffe7cb986255063bb9b0a5f3fb3fc8e34c)
(cherry picked from commit 4580094d2d9d5b952c4526ee23204f75a5bb2f1b)
Conflicts:
sw/source/core/frmedt/fecopy.cxx
(cherry picked from commit 2171fff4c1a57ede8f9693d7c0d95c1171a49a70)
Change-Id: I77b5b7751d1036a6401f708532537d874969502e
Reviewed-on: https://gerrit.libreoffice.org/6951
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx
index 3fa4a73..6c503dc 100644
--- a/sw/source/core/frmedt/fecopy.cxx
+++ b/sw/source/core/frmedt/fecopy.cxx
@@ -1039,25 +1039,22 @@ sal_Bool SwFEShell::Paste( SwDoc* pClpDoc, sal_Bool bIncludingPageFrames )
aIndexBefore--;
pClpDoc->CopyRange( aCpyPam, rInsPos, false );
+ // Note: aCpyPam is invalid now
- {
- ++aIndexBefore;
- SwPaM aPaM(SwPosition(aIndexBefore),
- SwPosition(rInsPos.nNode));
+ ++aIndexBefore;
+ SwPaM aPaM(SwPosition(aIndexBefore),
+ SwPosition(rInsPos.nNode));
- aPaM.GetDoc()->MakeUniqueNumRules(aPaM);
- }
- }
+ aPaM.GetDoc()->MakeUniqueNumRules(aPaM);
- // Update the rsid of each pasted text node.
- {
- xub_StrLen nNodesCnt = aCpyPam.End()->nNode.GetIndex() - aCpyPam.Start()->nNode.GetIndex();
+ // Update the rsid of each pasted text node.
SwNodes &rDestNodes = GetDoc()->GetNodes();
- xub_StrLen nDestStart = PCURCRSR->GetPoint()->nNode.GetIndex() - nNodesCnt;
+ sal_uLong const nEndIdx = aPaM.End()->nNode.GetIndex();
- for ( sal_uInt64 nIdx = 0; nIdx <= nNodesCnt; nIdx++ )
+ for (sal_uLong nIdx = aPaM.Start()->nNode.GetIndex();
+ nIdx <= nEndIdx; ++nIdx)
{
- SwTxtNode *pTxtNode = rDestNodes[ nDestStart + nIdx ]->GetTxtNode();
+ SwTxtNode *const pTxtNode = rDestNodes[nIdx]->GetTxtNode();
if ( pTxtNode )
{
GetDoc()->UpdateParRsid( pTxtNode );
More information about the Libreoffice-commits
mailing list