vcl/source/edit/textundo.cxx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
New commits: commit 3ebdb97a305ada182af045ea6438432adfe74e80 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Mon Apr 1 14:38:01 2019 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Apr 1 15:57:06 2019 +0200 tdf#124413 Crash on undo / redo in Basic IDE regression from commit 3a9d3f271c445641bebd057c4c91279f9b3cd7d5 Date: Mon Apr 23 09:38:41 2018 +0200 loplugin:useuniqueptr in TextDoc Change-Id: I51ab5de7571e4ec358442e54d590adf88fbeb12d Reviewed-on: https://gerrit.libreoffice.org/70061 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/vcl/source/edit/textundo.cxx b/vcl/source/edit/textundo.cxx index 80e26d34c577..adbf8be9076c 100644 --- a/vcl/source/edit/textundo.cxx +++ b/vcl/source/edit/textundo.cxx @@ -163,14 +163,19 @@ void TextUndoDelPara::Undo() void TextUndoDelPara::Redo() { + auto & rDocNodes = GetDoc()->GetNodes(); // pNode is not valid anymore in case an Undo joined paragraphs - mpNode = GetDoc()->GetNodes()[ mnPara ].get(); + mpNode = rDocNodes[ mnPara ].get(); GetTEParaPortions()->Remove( mnPara ); // do not delete Node because of Undo! - GetDoc()->GetNodes().erase( ::std::find_if( GetDoc()->GetNodes().begin(), GetDoc()->GetNodes().end(), - [&] (std::unique_ptr<TextNode> const & p) { return p.get() == mpNode; } ) ); + auto it = ::std::find_if( rDocNodes.begin(), rDocNodes.end(), + [&] (std::unique_ptr<TextNode> const & p) { return p.get() == mpNode; } ); + assert(it != rDocNodes.end()); + it->release(); + GetDoc()->GetNodes().erase( it ); + GetTextEngine()->ImpParagraphRemoved( mnPara ); mbDelObject = true; // belongs again to the Undo _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits