diff --git a/sw/source/core/layout/newfrm.cxx b/sw/source/core/layout/newfrm.cxx index 86eefcb..3d7bab7 100644 --- a/sw/source/core/layout/newfrm.cxx +++ b/sw/source/core/layout/newfrm.cxx @@ -601,10 +601,22 @@ void SwRootFrm::Init( SwFrmFmt* pFmt ) |* |*************************************************************************/ +#if OSL_DEBUG_LEVEL > 0 +static SwRootFrm* pDestructingRootFrm = NULL; +SwRootFrm* debug_GetDestructingRootFrm() +{ + OSL_TRACE("Destructing RootFrm is at %p", pDestructingRootFrm); + return pDestructingRootFrm; +} +#endif SwRootFrm::~SwRootFrm() { +#if OSL_DEBUG_LEVEL > 0 + pDestructingRootFrm = this; + debug_GetDestructingRootFrm(); +#endif bTurboAllowed = sal_False; pTurbo = 0; if(pBlink) @@ -677,4 +689,70 @@ void SwRootFrm::AllInvalidateSmartTagsOrSpelling(sal_Bool bSmartTags) const } //swmod 080218 } +#if OSL_DEBUG_LEVEL > 0 +static const SwFrm* debug_dfsnext(const SwFrm* pFrm) +{ + const SwFrm* pRet = pFrm->GetLower(); + if(pRet) + { + OSL_TRACE("moving down from %p to %p", pFrm, pRet); + return pRet; + } + pRet = pFrm->GetNext(); + if(pRet) + { + OSL_TRACE("sideways from %p to %p", pFrm, pRet); + return pRet; + } + pRet = pFrm; + OSL_TRACE("up from %p to %p", pRet, pRet->GetUpper()); + while( (pRet = pRet->GetUpper()) ) + { + if(pRet->GetNext()) + { + OSL_TRACE("sideways from %p to %p", pRet, pRet->GetNext()); + return pRet->GetNext(); + } + OSL_TRACE("up from %p to %p", pRet, pRet->GetUpper()); + } + return NULL; +} + +#include +#include +#include + +static void debug_checkCntntFrmFollow(const SwRootFrm* const pRootFrm) +{ + const SwFrm* pFrm = pRootFrm; + while( (pFrm = debug_dfsnext(pFrm)) ) + { + if(dynamic_cast(pFrm)) + OSL_TRACE("Checking root frame %p", pFrm); + else if(dynamic_cast(pFrm)) + OSL_TRACE("Checking page frame %p", pFrm); + else if(dynamic_cast(pFrm)) + OSL_TRACE("Checking text frame %p", pFrm); + else if(dynamic_cast(pFrm)) + OSL_TRACE("Checking body frame %p", pFrm); + else if(dynamic_cast(pFrm)) + OSL_TRACE("Checking footer frame %p", pFrm); + else if(dynamic_cast(pFrm)) + OSL_TRACE("Checking header frame %p", pFrm); + else + OSL_TRACE("Checking unknown frame %p", pFrm); + + + const SwCntntFrm* pCntntFrm = dynamic_cast(pFrm); + if(!pCntntFrm) + continue; + if(!pCntntFrm->IsFollow()) + OSL_TRACE("%p is not a follow", pFrm); + continue; + if(!pCntntFrm->FindMaster()) + OSL_TRACE("CntntFrm %p is lost in space", pCntntFrm); + } +} +#endif + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */