|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
From d68cbde9a23d8ac68916b49d0cbcc5a4c2147b37 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
From: Michael Stahl <mstahl@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
Date: Wed, 19 Sep 2012 20:47:48 +0200
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
Subject: [PATCH 2/4] rhbz#689053: fix crash following delete at last table
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
cell:
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
The IsSelOvr() in SwCrsrShell::Combine() detects that the PaM with mark
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
in the last table cell and point ouside the table is invalid, but
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
unfortunatley restores the wrong position, which does not actually
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
correct the PaM; the deletion on the invalid PaM then removes the
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
last SwTxtNode in the document, which leads to crash later.
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
(cherry picked from commit af4b6c94c68b5f67b931cde8d0acda6ec8b288bb)
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
Conflicts:
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
sw/source/core/crsr/crsrsh.cxx
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
Change-Id: Ib2ae0b54e6c15dbe5b6811d8696531bf2022e1a4
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
Reviewed-on: https://gerrit.libreoffice.org/652
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
Reviewed-by: Miklos Vajna <vmiklos@suse.cz>
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
Tested-by: Miklos Vajna <vmiklos@suse.cz>
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
(cherry picked from commit 6bcbf68b29b609cf06dbea0e192533e11eb523c3)
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
---
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
sw/source/core/crsr/crsrsh.cxx | 15 ++++++++-------
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
1 file changed, 8 insertions(+), 7 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
index 36fe86d..626557c 100644
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
--- a/sw/source/core/crsr/crsrsh.cxx
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
+++ b/sw/source/core/crsr/crsrsh.cxx
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
@@ -1994,26 +1994,27 @@ void SwCrsrShell::Combine()
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
return;
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
SwCallLink aLk( *this ); // Crsr-Moves ueberwachen, evt. Link callen
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
- SwCrsrSaveState aSaveState( *pCurCrsr );
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
+ // rhbz#689053: IsSelOvr must restore the saved stack position, not the
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
+ // current one, because current point + stack mark may be invalid PaM
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
+ SwCrsrSaveState aSaveState(*pCrsrStk);
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
if( pCrsrStk->HasMark() ) // nur wenn GetMark gesetzt wurde
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
{
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
bool const bResult =
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
CheckNodesRange( pCrsrStk->GetMark()->nNode, pCurCrsr->GetPoint()->nNode, sal_True );
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
OSL_ENSURE(bResult, "StackCrsr & act. Crsr not in same Section.");
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
(void) bResult; // non-debug: unused
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
- // kopiere das GetMark
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
- if( !pCurCrsr->HasMark() )
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
- pCurCrsr->SetMark();
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
- *pCurCrsr->GetMark() = *pCrsrStk->GetMark();
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
- pCurCrsr->GetMkPos() = pCrsrStk->GetMkPos();
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
}
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
+ *pCrsrStk->GetPoint() = *pCurCrsr->GetPoint();
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
+ pCrsrStk->GetPtPos() = pCurCrsr->GetPtPos();
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
SwShellCrsr * pTmp = 0;
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
if( pCrsrStk->GetNext() != pCrsrStk )
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
{
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
pTmp = dynamic_cast<SwShellCrsr*>(pCrsrStk->GetNext());
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
}
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
- delete pCrsrStk;
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
+ delete pCurCrsr;
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
+ pCurCrsr = pCrsrStk;
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
+ pCrsrStk->MoveTo(0); // remove from ring
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
pCrsrStk = pTmp;
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
if( !pCurCrsr->IsInProtectTable( sal_True ) &&
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
!pCurCrsr->IsSelOvr( nsSwCursorSelOverFlags::SELOVER_TOGGLE |
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
--
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
1.7.11.4
|
|
![](https://seccdn.libravatar.org/avatar/458cba86a9e3c708792786cff75e0477690c6568e870645d469cf18baaf50224?s=16&d=retro) |
aa67036 |
|