Resolves: rhbz#907933 crash on removing second last para in cell...

if (basically) the last para is on next page

Change-Id: Iaff610ea94a829e73bfb8c694a27e0e9b4f6e295
Reviewed-on: https://gerrit.libreoffice.org/2012
Tested-by: Michael Stahl <mstahl@redhat.com>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
diff --git a/sw/source/core/inc/tabfrm.hxx b/sw/source/core/inc/tabfrm.hxx
index 464fc9c..1041385 100644
--- a/sw/source/core/inc/tabfrm.hxx
+++ b/sw/source/core/inc/tabfrm.hxx
@@ -151,6 +151,8 @@ public:
    //
    sal_Bool HasFollowFlowLine() const { return bHasFollowFlowLine; }
    void SetFollowFlowLine( sal_Bool bNew ) { bHasFollowFlowLine = bNew; }
    //return the SwTabFrm (if any) that this SwTabFrm is a follow flow line for
    SwTabFrm* GetFollowFlowLineFor();

    sal_Bool IsRebuildLastLine() const { return bIsRebuildLastLine; }
    void SetRebuildLastLine( sal_Bool bNew ) { bIsRebuildLastLine = bNew; }
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index 27ad754..fb23128 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -132,8 +132,28 @@ extern const SwTable   *pRowCacheLastTable;
extern const SwTabFrm  *pRowCacheLastTabFrm;
extern const SwFrm     *pRowCacheLastCellFrm;

//return the SwTabFrm (if any) that this SwTabFrm is a follow flow line for
SwTabFrm* SwTabFrm::GetFollowFlowLineFor()
{
    SwFlowFrm *pPrec = GetPrecede();
    if (pPrec && pPrec->GetFrm()->IsTabFrm())
    {
        SwTabFrm *pPrevTabFrm = (SwTabFrm*)pPrec;
        assert(this == pPrevTabFrm->GetFollow());
        if (pPrevTabFrm->HasFollowFlowLine() && pPrevTabFrm->GetFollow() == this)
            return pPrevTabFrm;
    }
    return NULL;
}

SwTabFrm::~SwTabFrm()
{
    //rhbz#907933, we are a follow flow line for something and have been
    //deleted, remove ourself as a follow flowline
    SwTabFrm* pFlowFrameFor = GetFollowFlowLineFor();
    if (pFlowFrameFor)
        pFlowFrameFor->RemoveFollowFlowLine();

    // There is some terrible code in fetab.cxx, that
    // makes use of these global pointers. Obviously
    // this code did not consider that a TabFrm can be