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.grandin@collabora.co.uk>
diff --git a/vcl/source/edit/textundo.cxx b/vcl/source/edit/textundo.cxx
index 80e26d34..adbf8be 100644
--- a/vcl/source/edit/textundo.cxx
+++ b/vcl/source/edit/textundo.cxx
@@ -163,14 +163,19 @@

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