diff options
-rw-r--r-- | sw/source/core/layout/frmtool.cxx | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/sw/source/core/layout/frmtool.cxx b/sw/source/core/layout/frmtool.cxx index 2523582a8e48..158ac489ecb1 100644 --- a/sw/source/core/layout/frmtool.cxx +++ b/sw/source/core/layout/frmtool.cxx @@ -1190,18 +1190,24 @@ void AppendAllObjs(const SwFrameFormats* pTable, const SwFrame* pSib) if(!isConnected) { pFormat->MakeFrames(); - pFirstRequeued = nullptr; + pFormat->CallSwClientNotify(sw::GetObjectConnectedHint(isConnected, pRoot)); } - else + // do this *before* push_back! the circular_buffer can be "full"! + vFormatsToConnect.pop_front(); + if (!isConnected) { if(pFirstRequeued == pFormat) // If nothing happens anymore we can stop. break; if(!pFirstRequeued) pFirstRequeued = pFormat; + assert(!vFormatsToConnect.full()); vFormatsToConnect.push_back(pFormat); } - vFormatsToConnect.pop_front(); + else + { + pFirstRequeued = nullptr; + } } } |