sw/inc/doc.hxx                                          |    6 -
 sw/inc/frameformats.hxx                                 |   14 ----
 sw/inc/frmfmt.hxx                                       |   52 ++++------------
 sw/inc/textboxhelper.hxx                                |    7 --
 sw/qa/core/attr/attr.cxx                                |    4 -
 sw/qa/core/doc/doc.cxx                                  |   13 ++--
 sw/qa/core/draw/draw.cxx                                |    2 
 sw/qa/core/layout/flycnt.cxx                            |    4 -
 sw/qa/core/txtnode/txtnode.cxx                          |    4 -
 sw/qa/core/undo/undo.cxx                                |    2 
 sw/qa/core/view/view.cxx                                |    6 +
 sw/qa/extras/htmlimport/htmlimport.cxx                  |    2 
 sw/qa/extras/ooxmlexport/ooxmlexport.cxx                |    4 -
 sw/qa/extras/ooxmlexport/ooxmlexport13.cxx              |    2 
 sw/qa/extras/rtfexport/rtfexport4.cxx                   |    2 
 sw/qa/extras/uiwriter/uiwriter2.cxx                     |    6 -
 sw/qa/extras/uiwriter/uiwriter5.cxx                     |    6 -
 sw/qa/extras/uiwriter/uiwriter8.cxx                     |   12 +--
 sw/qa/extras/ww8export/ww8export.cxx                    |    4 -
 sw/qa/filter/html/html.cxx                              |    8 +-
 sw/qa/filter/ww8/ww8.cxx                                |    4 -
 sw/qa/uibase/docvw/docvw.cxx                            |    4 -
 sw/qa/uibase/uno/uno.cxx                                |    4 -
 sw/source/core/crsr/crstrvl.cxx                         |    5 -
 sw/source/core/doc/CntntIdxStore.cxx                    |    4 -
 sw/source/core/doc/DocumentContentOperationsManager.cxx |    6 +
 sw/source/core/doc/DocumentLayoutManager.cxx            |   11 +--
 sw/source/core/doc/dbgoutsw.cxx                         |   13 ++--
 sw/source/core/doc/docbasic.cxx                         |   12 +--
 sw/source/core/doc/doccomp.cxx                          |   10 +--
 sw/source/core/doc/docedt.cxx                           |   30 ++++-----
 sw/source/core/doc/docfly.cxx                           |   23 +++++--
 sw/source/core/doc/docfmt.cxx                           |   11 +--
 sw/source/core/doc/doclay.cxx                           |   11 ++-
 sw/source/core/doc/docnew.cxx                           |    4 -
 sw/source/core/doc/docsort.cxx                          |    2 
 sw/source/core/doc/tblcpy.cxx                           |    2 
 sw/source/core/doc/textboxhelper.cxx                    |    5 -
 sw/source/core/docnode/ndtbl.cxx                        |    3 
 sw/source/core/docnode/node.cxx                         |   20 +++---
 sw/source/core/draw/dcontact.cxx                        |    9 +-
 sw/source/core/frmedt/fecopy.cxx                        |   12 +--
 sw/source/core/frmedt/fefly1.cxx                        |    6 -
 sw/source/core/frmedt/tblsel.cxx                        |    2 
 sw/source/core/inc/frmtool.hxx                          |    8 +-
 sw/source/core/layout/atrfrm.cxx                        |   29 ++++++--
 sw/source/core/layout/frmtool.cxx                       |   18 +++--
 sw/source/core/layout/pagechg.cxx                       |   29 ++++----
 sw/source/core/layout/tabfrm.cxx                        |    6 -
 sw/source/core/layout/wsfrm.cxx                         |    4 -
 sw/source/core/text/EnhancedPDFExportHelper.cxx         |    5 +
 sw/source/core/text/itratr.cxx                          |    6 -
 sw/source/core/undo/rolbck.cxx                          |    2 
 sw/source/core/undo/undel.cxx                           |   24 ++++---
 sw/source/core/undo/undobj.cxx                          |    4 -
 sw/source/core/undo/undobj1.cxx                         |    8 +-
 sw/source/core/undo/undraw.cxx                          |   28 ++++----
 sw/source/core/undo/untbl.cxx                           |    4 -
 sw/source/core/unocore/unocoll.cxx                      |   10 ++-
 sw/source/core/unocore/unoobj2.cxx                      |    9 +-
 sw/source/core/view/viewsh.cxx                          |    9 ++
 sw/source/filter/html/htmlforw.cxx                      |   10 +--
 sw/source/filter/html/htmlgrin.cxx                      |    5 -
 sw/source/filter/html/swhtml.cxx                        |    4 -
 sw/source/filter/ww8/wrtw8esh.cxx                       |    2 
 65 files changed, 318 insertions(+), 279 deletions(-)

New commits:
commit 52acefd6024ec79f8333ba40eef83816eda3046f
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Thu Apr 27 07:58:23 2023 +0200
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Thu Apr 27 09:14:08 2023 +0200

    Revert "introduce sw::SpzFrameFormat ..."
    
    This reverts commit 09cdcb5f37bb4e42da7b28db6e757b9f2affed14.  It  broke at
    least CppunitTest_sw_uiwriter3
    (<https://ci.libreoffice.org//job/lo_ubsan/2756/>),
    
    > /sw/source/core/undo/rolbck.cxx:938:46: runtime error: downcast of 
address 0x61300041fd00 which does not point to an object of type 
'SwFlyFrameFormat'
    > 0x61300041fd00: note: object is of type 'SwDrawFrameFormat'
    >  00 00 00 00  70 83 cf 09 25 7f 00 00  00 83 47 00 30 61 00 00  40 e5 43 
00 30 61 00 00  80 66 5d 00
    >               ^~~~~~~~~~~~~~~~~~~~~~~
    >               vptr for 'SwDrawFrameFormat'
    >     #0 0x7f24fca9c5b9 in SwHistoryChangeFlyAnchor::SetInDoc(SwDoc*, bool) 
/sw/source/core/undo/rolbck.cxx:938:46
    >     #1 0x7f24fca880f3 in SwHistory::Rollback(SwDoc*, unsigned short) 
/sw/source/core/undo/rolbck.cxx:1208:15
    >     #2 0x7f24fcb47832 in SwUndoDelete::UndoImpl(sw::UndoRedoContext&) 
/sw/source/core/undo/undel.cxx:1031:33
    >     #3 0x7f24fcb703c2 in SwUndo::UndoWithContext(SfxUndoContext&) 
/sw/source/core/undo/undobj.cxx:225:5
    >     #4 0x7f2543b8b57c in SfxUndoManager::ImplUndo(SfxUndoContext*) 
/svl/source/undo/undo.cxx:712:22
    >     #5 0x7f2543b8c4f8 in SfxUndoManager::UndoWithContext(SfxUndoContext&) 
/svl/source/undo/undo.cxx:664:12
    >     #6 0x7f24fca6a074 in 
sw::UndoManager::impl_DoUndoRedo(sw::UndoManager::UndoOrRedoType, unsigned 
long) /sw/source/core/undo/docundo.cxx:696:32
    >     #7 0x7f24fca6b38f in sw::UndoManager::UndoWithOffset(unsigned long) 
/sw/source/core/undo/docundo.cxx:731:16
    >     #8 0x7f24fa830b18 in SwEditShell::Undo(unsigned short, unsigned 
short) /sw/source/core/edit/edundo.cxx:141:57
    >     #9 0x7f250088f448 in SwWrtShell::Do(SwWrtShell::DoType, unsigned 
short, unsigned short) /sw/source/uibase/wrtsh/wrtundo.cxx:45:26
    >     #10 0x7f24ff7f16e2 in SwBaseShell::ExecUndo(SfxRequest&) 
/sw/source/uibase/shells/basesh.cxx:651:27
    >     #11 0x7f24ff7eea14 in SfxStubSwBaseShellExecUndo(SfxShell*, 
SfxRequest&) /workdir/SdiTarget/sw/sdi/swslots.hxx:2203:1
    >     #12 0x7f2523fbc059 in SfxDispatcher::Call_Impl(SfxShell&, SfxSlot 
const&, SfxRequest&, bool) /sfx2/source/control/dispatch.cxx:254:9
    >     #13 0x7f2523fd1ced in SfxDispatcher::Execute_(SfxShell&, SfxSlot 
const&, SfxRequest&, SfxCallMode) /sfx2/source/control/dispatch.cxx:753:9
    >     #14 0x7f2523f61333 in SfxBindings::Execute_Impl(SfxRequest&, SfxSlot 
const*, SfxShell*) /sfx2/source/control/bindings.cxx:1060:22
    >     #15 0x7f252437496b in 
SfxDispatchController_Impl::dispatch(com::sun::star::util::URL const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, 
com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> 
const&) /sfx2/source/control/unoctitm.cxx:688:53
    >     #16 0x7f2524377211 in 
SfxOfficeDispatch::dispatchWithNotification(com::sun::star::util::URL const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, 
com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> 
const&) /sfx2/source/control/unoctitm.cxx:266:16
    >     #17 0x7f24cad28dd6 in 
framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatch>
 const&, com::sun::star::util::URL const&, bool, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) 
/framework/source/services/dispatchhelper.cxx:163:30
    >     #18 0x7f24cad27cb2 in 
framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider>
 const&, rtl::OUString const&, rtl::OUString const&, int, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) 
/framework/source/services/dispatchhelper.cxx:120:16
    >     #19 0x7f24cad29684 in non-virtual thunk to 
framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider>
 const&, rtl::OUString const&, rtl::OUString const&, int, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) 
/framework/source/services/dispatchhelper.cxx
    >     #20 0x7f24e91d386d in 
unotest::MacrosTest::dispatchCommand(com::sun::star::uno::Reference<com::sun::star::lang::XComponent>
 const&, rtl::OUString const&, 
com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) 
/unotest/source/cpp/macros_test.cxx:94:33
    >     #21 0x7f25319b2012 in testTdf132321::TestBody() 
/sw/qa/extras/uiwriter/uiwriter3.cxx:982:5
    
    Change-Id: Ibeb181bc38cd6f88df76403cca8a15b45090633f
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151027
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx
index 7a1b2e0ee969..d9ff583fcdec 100644
--- a/sw/inc/doc.hxx
+++ b/sw/inc/doc.hxx
@@ -248,7 +248,7 @@ class SW_DLLPUBLIC SwDoc final
 
     std::unique_ptr<SwFrameFormats>    mpFrameFormatTable;    //< Format table
     std::unique_ptr<SwCharFormats>     mpCharFormatTable;
-    std::unique_ptr<sw::FrameFormats<sw::SpzFrameFormat*>>    
mpSpzFrameFormatTable;
+    std::unique_ptr<SwFrameFormats>    mpSpzFrameFormatTable;
     std::unique_ptr<SwSectionFormats>  mpSectionFormatTable;
     std::unique_ptr<sw::TableFrameFormats>    mpTableFrameFormatTable; //< For 
tables
     std::unique_ptr<SwTextFormatColls> mpTextFormatCollTable;   //< 
FormatCollections
@@ -754,8 +754,8 @@ public:
           SwCharFormats* GetCharFormats()         { return 
mpCharFormatTable.get();}
 
     // LayoutFormats (frames, DrawObjects), sometimes const sometimes not
-    const sw::FrameFormats<sw::SpzFrameFormat*>* GetSpzFrameFormats() const   
{ return mpSpzFrameFormatTable.get(); }
-          sw::FrameFormats<sw::SpzFrameFormat*>* GetSpzFrameFormats()         
{ return mpSpzFrameFormatTable.get(); }
+    const SwFrameFormats* GetSpzFrameFormats() const   { return 
mpSpzFrameFormatTable.get(); }
+          SwFrameFormats* GetSpzFrameFormats()         { return 
mpSpzFrameFormatTable.get(); }
 
     const SwFrameFormat *GetDfltFrameFormat() const   { return 
mpDfltFrameFormat.get(); }
           SwFrameFormat *GetDfltFrameFormat()         { return 
mpDfltFrameFormat.get(); }
diff --git a/sw/inc/frameformats.hxx b/sw/inc/frameformats.hxx
index be3e5fd9ae77..97c86408e867 100644
--- a/sw/inc/frameformats.hxx
+++ b/sw/inc/frameformats.hxx
@@ -19,7 +19,6 @@
 #pragma once
 
 #include "docary.hxx"
-#include "frmfmt.hxx"
 #include "swtblfmt.hxx"
 #include <boost/multi_index_container.hpp>
 #include <boost/multi_index/composite_key.hpp>
@@ -154,10 +153,6 @@ template <class value_type> class FrameFormats final : 
public SwFormatsBase
     friend class ::SwFrameFormat;
 
 public:
-    // getting from T* to T const* ...
-    typedef typename std::add_pointer<
-        typename std::add_const<typename 
std::remove_pointer<value_type>::type>::type>::type
-        const_value_type;
     typedef typename FrameFormatsContainer::size_type size_type;
     typedef typename FrameFormatsContainer::template index<ByPos>::type 
index_type;
     typedef typename index_type::iterator iterator;
@@ -279,12 +274,7 @@ public:
     bool ContainsFormat(const value_type& rpFormat) const { return 
rpFormat->m_ffList == this; };
 
     /// not so fast check that given format is still alive (i.e. contained 
here)
-    bool IsAlive(const_value_type pFrameFormat) const
-    {
-        auto pThisNonConst
-            = const_cast<typename 
std::remove_const<sw::FrameFormats<value_type>>::type*>(this);
-        return pThisNonConst->find(const_cast<value_type>(pFrameFormat)) != 
pThisNonConst->end();
-    };
+    bool IsAlive(value_type const* p) const { return find(*p) != end(); };
 
     void DeleteAndDestroyAll(bool keepDefault = false)
     {
@@ -324,10 +314,8 @@ public:
     };
 };
 typedef FrameFormats<::SwTableFormat*> TableFrameFormats;
-typedef FrameFormats<sw::SpzFrameFormat*> SpzFrameFormats;
 }
 
 template class SW_DLLPUBLIC sw::FrameFormats<SwTableFormat*>;
-template class SW_DLLPUBLIC sw::FrameFormats<sw::SpzFrameFormat*>;
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/inc/frmfmt.hxx b/sw/inc/frmfmt.hxx
index 309aa78de552..f5e44e03136c 100644
--- a/sw/inc/frmfmt.hxx
+++ b/sw/inc/frmfmt.hxx
@@ -23,27 +23,20 @@
 #include <com/sun/star/text/PositionLayoutDir.hpp>
 #include <cppuhelper/weakref.hxx>
 #include <tools/gen.hxx>
-namespace sw
-{
-    template<class T> class FrameFormats;
-    class SpzFrameFormat;
-}
 #include "format.hxx"
 #include "hintids.hxx"
 #include "swdllapi.h"
 #include <list>
 #include "textboxhelper.hxx"
 
+class SwFlyFrame;
+class SwFlyDrawContact;
+class SwAnchoredObject;
 class Graphic;
-class IMapObject;
 class ImageMap;
-class SdrObject;
-class SwAnchoredObject;
-class SwDrawFrameFormat;
-class SwFlyDrawContact;
-class SwFlyFrame;
-class SwFlyFrameFormat;
+class IMapObject;
 class SwRect;
+class SdrObject;
 class SwRootFrame;
 class SwTableBox;
 
@@ -61,7 +54,6 @@ namespace sw
         virtual ~FindSdrObjectHint() override;
     };
     template<class T> class FrameFormats;
-    class SpzFrameFormat;
 }
 class SwFormatsBase;
 class SwFrameFormats;
@@ -76,7 +68,6 @@ class SW_DLLPUBLIC SwFrameFormat
     friend class ::sw::DocumentLayoutManager; ///< Is allowed to call 
protected CTor.
     friend class SwFrameFormats;     ///< Is allowed to update the list 
backref.
     friend class sw::FrameFormats<SwTableFormat*>;     ///< Is allowed to 
update the list backref.
-    friend class sw::FrameFormats<sw::SpzFrameFormat*>;     ///< Is allowed to 
update the list backref.
     friend class SwTextBoxHelper;
     friend class SwUndoFlyBase; ///< calls SetOtherTextBoxFormat
 
@@ -199,25 +190,9 @@ public:
     virtual bool IsVisible() const;
 };
 
-namespace sw
-{
-    class SW_DLLPUBLIC SpzFrameFormat: public SwFrameFormat {
-        friend ::SwDrawFrameFormat;
-        friend ::SwFlyFrameFormat;
-        SpzFrameFormat(
-            SwAttrPool& rPool,
-            const OUString& rFormatName,
-            SwFrameFormat* pDerivedFrame,
-            sal_uInt16 nFormatWhich)
-            : SwFrameFormat(rPool, rFormatName, pDerivedFrame, nFormatWhich)
-        {
-            assert(nFormatWhich == RES_DRAWFRMFMT || nFormatWhich == 
RES_FLYFRMFMT);
-        };
-    };
-}
 // The FlyFrame-Format
 
-class SW_DLLPUBLIC SwFlyFrameFormat final : public sw::SpzFrameFormat
+class SW_DLLPUBLIC SwFlyFrameFormat final : public SwFrameFormat
 {
     friend class SwDoc;
     OUString msTitle;
@@ -405,7 +380,7 @@ namespace sw
     };
 }
 
-class SW_DLLPUBLIC SwDrawFrameFormat final : public sw::SpzFrameFormat
+class SW_DLLPUBLIC SwDrawFrameFormat final : public SwFrameFormat
 {
     friend class SwDoc;
 
@@ -421,12 +396,15 @@ class SW_DLLPUBLIC SwDrawFrameFormat final : public 
sw::SpzFrameFormat
 
     bool mbPosAttrSet;
 
-    SwDrawFrameFormat(SwAttrPool& rPool, const OUString& rFormatName, 
SwFrameFormat* pDerivedFrame)
-        : sw::SpzFrameFormat(rPool, rFormatName, pDerivedFrame, 
RES_DRAWFRMFMT),
+    SwDrawFrameFormat( SwAttrPool& rPool, const OUString &rFormatNm,
+                    SwFrameFormat *pDrvdFrame )
+        : SwFrameFormat( rPool, rFormatNm, pDrvdFrame, RES_DRAWFRMFMT ),
           m_pSdrObjectCached(nullptr),
-          meLayoutDir(SwFrameFormat::HORI_L2R),
-          
mnPositionLayoutDir(css::text::PositionLayoutDir::PositionInLayoutDirOfAnchor),
-          mbPosAttrSet(false)
+          meLayoutDir( SwFrameFormat::HORI_L2R ),
+
+          mnPositionLayoutDir( 
css::text::PositionLayoutDir::PositionInLayoutDirOfAnchor ),
+
+          mbPosAttrSet( false )
     {}
 
 public:
diff --git a/sw/inc/textboxhelper.hxx b/sw/inc/textboxhelper.hxx
index 2eef22d2b20e..ebf329342d8e 100644
--- a/sw/inc/textboxhelper.hxx
+++ b/sw/inc/textboxhelper.hxx
@@ -42,11 +42,6 @@ namespace com::sun::star::text
 {
 class XTextFrame;
 }
-namespace sw
-{
-template <class T> class FrameFormats;
-class SpzFrameFormat;
-}
 
 /**
  * A TextBox is a TextFrame, that is tied to a drawinglayer shape.
@@ -170,7 +165,7 @@ public:
     static void getShapeWrapThrough(const SwFrameFormat* pTextBox, bool& 
rWrapThrough);
 
     /// Saves the current shape -> textbox links in a map, so they can be 
restored later.
-    static void saveLinks(const sw::FrameFormats<sw::SpzFrameFormat*>& 
rFormats,
+    static void saveLinks(const SwFrameFormats& rFormats,
                           std::map<const SwFrameFormat*, const 
SwFrameFormat*>& rLinks);
     /// Undo the effect of saveLinks() + individual resetLink() calls.
     static void restoreLinks(std::set<ZSortFly>& rOld, 
std::vector<SwFrameFormat*>& rNew,
diff --git a/sw/qa/core/attr/attr.cxx b/sw/qa/core/attr/attr.cxx
index d123ed858b57..25d2a8025020 100644
--- a/sw/qa/core/attr/attr.cxx
+++ b/sw/qa/core/attr/attr.cxx
@@ -62,8 +62,8 @@ CPPUNIT_TEST_FIXTURE(Test, testFormatFlySplit)
     RndStdIds eAnchor = RndStdIds::FLY_AT_PARA;
     aMgr.InsertFlyFrame(eAnchor, aMgr.GetPos(), aMgr.GetSize());
     SwDoc* pDoc = getSwDoc();
-    sw::SpzFrameFormats& rFlys = *pDoc->GetSpzFrameFormats();
-    sw::SpzFrameFormat* pFly = rFlys[0];
+    SwFrameFormats& rFlys = *pDoc->GetSpzFrameFormats();
+    SwFrameFormat* pFly = rFlys[0];
     CPPUNIT_ASSERT(!pFly->GetAttrSet().GetFlySplit().GetValue());
 
     SfxItemSet aSet(pFly->GetAttrSet());
diff --git a/sw/qa/core/doc/doc.cxx b/sw/qa/core/doc/doc.cxx
index fc1ffc69e8d9..1597302a5f64 100644
--- a/sw/qa/core/doc/doc.cxx
+++ b/sw/qa/core/doc/doc.cxx
@@ -55,7 +55,7 @@ CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testMathInsertAnchorType)
     pShell->InsertObject(svt::EmbeddedObjectRef(), &aGlobalName);
 
     // Then the anchor type should be as-char.
-    sw::SpzFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rFormats.size());
     const SwFrameFormat& rFormat = *rFormats[0];
     const SwFormatAnchor& rAnchor = rFormat.GetAnchor();
@@ -72,7 +72,7 @@ CPPUNIT_TEST_FIXTURE(SwCoreDocTest, 
testTextboxTextRotateAngle)
     // Check the writing direction of the only TextFrame in the document.
     createSwDoc("textbox-textrotateangle.odt");
     SwDoc* pDoc = getSwDoc();
-    sw::SpzFrameFormats& rFrameFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rFrameFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rFrameFormats.size());
     CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(RES_DRAWFRMFMT), 
rFrameFormats[0]->Which());
     CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(RES_FLYFRMFMT), 
rFrameFormats[1]->Which());
@@ -132,9 +132,9 @@ CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testTextBoxZOrder)
 {
     createSwDoc("textbox-zorder.docx");
     SwDoc* pDoc = getSwDoc();
-    sw::SpzFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(3), rFormats.size());
-    const sw::SpzFrameFormat* pEllipse = rFormats[2];
+    const SwFrameFormat* pEllipse = rFormats[2];
     const SdrObject* pEllipseShape = pEllipse->FindRealSdrObject();
     // Make sure we test the right shape.
     CPPUNIT_ASSERT_EQUAL(OUString("Shape3"), pEllipseShape->GetName());
@@ -291,9 +291,10 @@ CPPUNIT_TEST_FIXTURE(SwCoreDocTest, testCopyBookmarks)
 
     // Also, when checking the # of non-copy images in the resulting doc model:
     nActual = 0;
-    for (auto pSpz : *pDoc->GetSpzFrameFormats())
+    SwFrameFormats& rFrameFormats = *pDoc->GetSpzFrameFormats();
+    for (size_t i = 0; i < rFrameFormats.size(); ++i)
     {
-        if (pSpz->GetName().indexOf("Copy") == -1)
+        if (rFrameFormats[i]->GetName().indexOf("Copy") == -1)
         {
             ++nActual;
         }
diff --git a/sw/qa/core/draw/draw.cxx b/sw/qa/core/draw/draw.cxx
index b77a4ea65d94..17bedbdbab9c 100644
--- a/sw/qa/core/draw/draw.cxx
+++ b/sw/qa/core/draw/draw.cxx
@@ -64,7 +64,7 @@ CPPUNIT_TEST_FIXTURE(SwCoreDrawTest, testTextboxUndoOrdNum)
     createSwDoc("textbox-undo-ordnum.docx");
     SwDoc* pDoc = getSwDoc();
     SwWrtShell* pWrtShell = pDoc->GetDocShell()->GetWrtShell();
-    const auto& rFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
     // Test the state before del + undo.
     for (const auto& pFormat : rFormats)
     {
diff --git a/sw/qa/core/layout/flycnt.cxx b/sw/qa/core/layout/flycnt.cxx
index 1ad1443dd392..f7e6992bf014 100644
--- a/sw/qa/core/layout/flycnt.cxx
+++ b/sw/qa/core/layout/flycnt.cxx
@@ -77,8 +77,8 @@ void Test::Create1x2SplitFly()
     pWrtShell->EndAllAction();
     // Allow the text frame to split:
     pWrtShell->StartAllAction();
-    auto& rFlys = *pDoc->GetSpzFrameFormats();
-    auto pFly = rFlys[0];
+    SwFrameFormats& rFlys = *pDoc->GetSpzFrameFormats();
+    SwFrameFormat* pFly = rFlys[0];
     SwAttrSet aSet(pFly->GetAttrSet());
     aSet.Put(SwFormatFlySplit(true));
     pDoc->SetAttr(aSet, *pFly);
diff --git a/sw/qa/core/txtnode/txtnode.cxx b/sw/qa/core/txtnode/txtnode.cxx
index f99cc3dd54dd..e0526bdbb361 100644
--- a/sw/qa/core/txtnode/txtnode.cxx
+++ b/sw/qa/core/txtnode/txtnode.cxx
@@ -74,7 +74,7 @@ CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testTextBoxCopyAnchor)
     pWrtShell->SttEndDoc(/*bStart=*/false);
     pWrtShell->Paste(aClipboard);
 
-    const auto& rFormats = *pShell->GetDoc()->GetSpzFrameFormats();
+    const SwFrameFormats& rFormats = *pShell->GetDoc()->GetSpzFrameFormats();
     // Without the accompanying fix in place, this test would have failed with:
     // - Expected: 4
     // - Actual  : 6
@@ -176,7 +176,7 @@ CPPUNIT_TEST_FIXTURE(SwCoreTxtnodeTest, testFlyAnchorUndo)
     SwXTextDocument* pTextDoc = 
dynamic_cast<SwXTextDocument*>(mxComponent.get());
     SwDocShell* pShell = pTextDoc->GetDocShell();
     SwDoc* pDoc = pShell->GetDoc();
-    const auto& rSpz = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rSpz = *pDoc->GetSpzFrameFormats();
     sal_Int32 nExpected = rSpz[0]->GetAnchor().GetAnchorContentOffset();
 
     // When deleting that last character and undoing it:
diff --git a/sw/qa/core/undo/undo.cxx b/sw/qa/core/undo/undo.cxx
index 221f2ba4ece7..21543416dae8 100644
--- a/sw/qa/core/undo/undo.cxx
+++ b/sw/qa/core/undo/undo.cxx
@@ -66,7 +66,7 @@ CPPUNIT_TEST_FIXTURE(SwCoreUndoTest, testTextboxCutUndo)
     selectShape(1);
     rtl::Reference<SwTransferable> pTransfer = new SwTransferable(*pWrtShell);
     pTransfer->Cut();
-    auto& rSpzFrameFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rSpzFrameFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(0), rSpzFrameFormats.size());
 
     pWrtShell->Undo();
diff --git a/sw/qa/core/view/view.cxx b/sw/qa/core/view/view.cxx
index 576095c7f4cc..a3fd1863031e 100644
--- a/sw/qa/core/view/view.cxx
+++ b/sw/qa/core/view/view.cxx
@@ -49,11 +49,13 @@ CPPUNIT_TEST_FIXTURE(Test, testUpdateOleObjectPreviews)
     pWrtShell->UpdateOleObjectPreviews();
 
     // Then make sure that the working preview of those objects are not lost:
-    const auto pFormats = pDoc->GetSpzFrameFormats();
+    const SwFrameFormats* pFormats = pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT(pFormats);
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), pFormats->size());
-    for (auto pFormat : *pFormats)
+    for (size_t i = 0; i < pFormats->size(); ++i)
     {
+        SwFrameFormat* pFormat = (*pFormats)[i];
+
         const SwNodeIndex* pNodeIndex = pFormat->GetContent().GetContentIdx();
         CPPUNIT_ASSERT(pNodeIndex);
         SwNode* pNode = pDoc->GetNodes()[pNodeIndex->GetIndex() + 1];
diff --git a/sw/qa/extras/htmlimport/htmlimport.cxx 
b/sw/qa/extras/htmlimport/htmlimport.cxx
index 34900529ada9..93c6598225b1 100644
--- a/sw/qa/extras/htmlimport/htmlimport.cxx
+++ b/sw/qa/extras/htmlimport/htmlimport.cxx
@@ -402,7 +402,7 @@ CPPUNIT_TEST_FIXTURE(HtmlImportTest, testTdf122789)
     SwXTextDocument* pTextDoc = 
dynamic_cast<SwXTextDocument*>(mxComponent.get());
     CPPUNIT_ASSERT(pTextDoc);
     SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc();
-    const auto& rFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(1), rFormats.size());
     // This failed, the image had an absolute size, not a relative one.
     CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt8>(70), 
rFormats[0]->GetAttrSet().GetFrameSize().GetWidthPercent());
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index a0dd296e5e32..d69b53fa924c 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -1103,8 +1103,8 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf115094v3)
     createSwDoc("tdf115094v3.docx");
     {
         SwDoc* pDoc = getSwDoc();
-        auto& rSpzFormats = *pDoc->GetSpzFrameFormats();
-        auto pFormat = rSpzFormats[0];
+        SwFrameFormats& rSpzFormats = *pDoc->GetSpzFrameFormats();
+        SwFrameFormat* pFormat = rSpzFormats[0];
         // Without the fix, this has failed with:
         // - Expected: 1991
         // - Actual  : 1883
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx 
b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
index 491626ff7812..a1610c35dbbb 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport13.cxx
@@ -324,7 +324,7 @@ DECLARE_OOXMLEXPORT_TEST(testBtlrShape, "btlr-textbox.docx")
     SwXTextDocument* pTextDoc = 
dynamic_cast<SwXTextDocument*>(mxComponent.get());
     CPPUNIT_ASSERT(pTextDoc);
     SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc();
-    const auto& rFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rFormats.size());
     CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(RES_DRAWFRMFMT), 
rFormats[0]->Which());
     CPPUNIT_ASSERT_EQUAL(o3tl::narrowing<sal_uInt16>(RES_FLYFRMFMT), 
rFormats[1]->Which());
diff --git a/sw/qa/extras/rtfexport/rtfexport4.cxx 
b/sw/qa/extras/rtfexport/rtfexport4.cxx
index 0213d0b893b7..3ae9fa470000 100644
--- a/sw/qa/extras/rtfexport/rtfexport4.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport4.cxx
@@ -243,7 +243,7 @@ DECLARE_RTFEXPORT_TEST(testAnchoredAtSamePosition, 
"anchor.fodt")
 
     CPPUNIT_ASSERT_EQUAL(OUString("foobar"), getParagraph(1)->getString());
 
-    auto& rFlys = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rFlys(*pDoc->GetSpzFrameFormats());
     if (isExported())
     { // 2, not 3: the form control becomes a field on export...
         CPPUNIT_ASSERT_EQUAL(size_t(2), rFlys.size());
diff --git a/sw/qa/extras/uiwriter/uiwriter2.cxx 
b/sw/qa/extras/uiwriter/uiwriter2.cxx
index 1833b1220dbd..492de89912bc 100644
--- a/sw/qa/extras/uiwriter/uiwriter2.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter2.cxx
@@ -753,7 +753,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf137245)
         CPPUNIT_ASSERT(pFly != nullptr);
     }
 
-    const auto& rFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(4), rFormats.size());
 
     // move cursor back to body
@@ -2692,12 +2692,12 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest2, testTdf122942)
     pWrtShell->EndCreate(SdrCreateCmd::ForceEnd);
 
     // Make sure that the shape is inserted.
-    const auto& rFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rFormats.size());
 
     reload("writer8", "tdf122942.odt");
     pDoc = getSwDoc();
-    const auto& rFormats2 = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rFormats2 = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(2), rFormats2.size());
 
     // Make sure the top of the inserted shape does not move outside the 
existing shape, even after
diff --git a/sw/qa/extras/uiwriter/uiwriter5.cxx 
b/sw/qa/extras/uiwriter/uiwriter5.cxx
index b7a9a08d4316..a0356dfec4e5 100644
--- a/sw/qa/extras/uiwriter/uiwriter5.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter5.cxx
@@ -1459,10 +1459,10 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest5, testShapePageMove)
                                                        { &aXItem, &aYItem });
 
     // Check if the shape anchor was moved to the 2nd page as well.
-    auto pShapeFormats = pDoc->GetSpzFrameFormats();
+    SwFrameFormats* pShapeFormats = pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT(!pShapeFormats->empty());
     auto it = pShapeFormats->begin();
-    auto pShapeFormat = *it;
+    SwFrameFormat* pShapeFormat = *it;
     const SwPosition* pAnchor = pShapeFormat->GetAnchor().GetContentAnchor();
     CPPUNIT_ASSERT(pAnchor);
 
@@ -2798,7 +2798,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest5, testTdf128603)
     rUndoManager.Undo();
 
     // Make sure the content indexes still match.
-    const auto& rSpzFrameFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rSpzFrameFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT_EQUAL(static_cast<size_t>(6), rSpzFrameFormats.size());
     const SwNodeIndex* pIndex4 = 
rSpzFrameFormats[4]->GetContent().GetContentIdx();
     CPPUNIT_ASSERT(pIndex4);
diff --git a/sw/qa/extras/uiwriter/uiwriter8.cxx 
b/sw/qa/extras/uiwriter/uiwriter8.cxx
index 81a6d9e25fc2..65a1352dc79b 100644
--- a/sw/qa/extras/uiwriter/uiwriter8.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter8.cxx
@@ -1072,7 +1072,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest8, testTdf130805)
     createSwDoc("tdf130805.odt");
     SwDoc* pDoc = getSwDoc();
 
-    const auto& rFrmFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rFrmFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT(rFrmFormats.size() >= size_t(o3tl::make_unsigned(1)));
     auto pShape = rFrmFormats.front();
     CPPUNIT_ASSERT(pShape);
@@ -1097,9 +1097,9 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest8, testTdf107893)
     SwDoc* pDoc = getSwDoc();
 
     //Get the format of the shape
-    const auto& rFrmFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rFrmFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT(rFrmFormats.size() >= size_t(o3tl::make_unsigned(1)));
-    auto pShape = rFrmFormats.front();
+    SwFrameFormat* pShape = rFrmFormats.front();
     CPPUNIT_ASSERT(pShape);
 
     //Add a textbox
@@ -1150,9 +1150,9 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest8, 
TestTextBoxCrashAfterLineDel)
     SwDoc* pDoc = getSwDoc();
 
     // Get the format of the shape
-    const auto& rFrmFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rFrmFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT(rFrmFormats.size() >= size_t(o3tl::make_unsigned(1)));
-    auto pShape = rFrmFormats.front();
+    SwFrameFormat* pShape = rFrmFormats.front();
     CPPUNIT_ASSERT(pShape);
 
     // Add a textbox
@@ -1974,7 +1974,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest8, AtPageTextBoxCrash)
     SwDoc* pDoc = getSwDoc();
 
     // Get the format of the shape
-    const auto& rFrmFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormats& rFrmFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT(rFrmFormats.size() >= size_t(o3tl::make_unsigned(1)));
     auto pShape = rFrmFormats.front();
     CPPUNIT_ASSERT(pShape);
diff --git a/sw/qa/extras/ww8export/ww8export.cxx 
b/sw/qa/extras/ww8export/ww8export.cxx
index d248c6ce6b26..f4274a629d39 100644
--- a/sw/qa/extras/ww8export/ww8export.cxx
+++ b/sw/qa/extras/ww8export/ww8export.cxx
@@ -689,10 +689,10 @@ DECLARE_WW8EXPORT_TEST(testTdf112535, "tdf112535.doc")
     SwDoc* pDoc = pTextDoc->GetDocShell()->GetDoc();
     CPPUNIT_ASSERT(pDoc->GetSpzFrameFormats());
 
-    auto& rFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
     CPPUNIT_ASSERT(!rFormats.empty());
 
-    const auto pFormat = rFormats[0];
+    const SwFrameFormat* pFormat = rFormats[0];
     CPPUNIT_ASSERT(pFormat);
 
     // Without the accompanying fix in place, this test would have failed: 
auto-contour was enabled
diff --git a/sw/qa/filter/html/html.cxx b/sw/qa/filter/html/html.cxx
index 523bc49a4358..6cd714bbdd48 100644
--- a/sw/qa/filter/html/html.cxx
+++ b/sw/qa/filter/html/html.cxx
@@ -65,8 +65,8 @@ CPPUNIT_TEST_FIXTURE(Test, testRelativeKeepAspect)
     // Then make sure that the aspect ratio of the image is kept:
     auto pTextDocument = dynamic_cast<SwXTextDocument*>(mxComponent.get());
     SwDoc* pDoc = pTextDocument->GetDocShell()->GetDoc();
-    const auto& rFormats = *pDoc->GetSpzFrameFormats();
-    const auto pFormat = rFormats[0];
+    const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormat* pFormat = rFormats[0];
     const SwFormatFrameSize& rSize = pFormat->GetFrameSize();
     // Without the accompanying fix in place, this test would have failed with:
     // - Expected: 255
@@ -86,8 +86,8 @@ CPPUNIT_TEST_FIXTURE(Test, testRelativeKeepAspectImage)
     // Then make sure that the aspect ratio of the image is kept:
     auto pTextDocument = dynamic_cast<SwXTextDocument*>(mxComponent.get());
     SwDoc* pDoc = pTextDocument->GetDocShell()->GetDoc();
-    const auto& rFormats = *pDoc->GetSpzFrameFormats();
-    const auto pFormat = rFormats[0];
+    const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormat* pFormat = rFormats[0];
     const SwFormatFrameSize& rSize = pFormat->GetFrameSize();
     // Without the accompanying fix in place, this test would have failed with:
     // - Expected: 255
diff --git a/sw/qa/filter/ww8/ww8.cxx b/sw/qa/filter/ww8/ww8.cxx
index b732a37eff40..a83bd12431df 100644
--- a/sw/qa/filter/ww8/ww8.cxx
+++ b/sw/qa/filter/ww8/ww8.cxx
@@ -214,8 +214,8 @@ CPPUNIT_TEST_FIXTURE(Test, testDocxFloatingTableExport)
     pWrtShell->StartAllAction();
     aMgr.InsertFlyFrame(RndStdIds::FLY_AT_PARA, aMgr.GetPos(), aMgr.GetSize());
     // Mark it as a floating table:
-    auto& rFlys = *pDoc->GetSpzFrameFormats();
-    auto pFly = rFlys[0];
+    SwFrameFormats& rFlys = *pDoc->GetSpzFrameFormats();
+    SwFrameFormat* pFly = rFlys[0];
     SwAttrSet aSet(pFly->GetAttrSet());
     aSet.Put(SwFormatFlySplit(true));
     pDoc->SetAttr(aSet, *pFly);
diff --git a/sw/qa/uibase/docvw/docvw.cxx b/sw/qa/uibase/docvw/docvw.cxx
index 280a0459109e..677a5abd2a54 100644
--- a/sw/qa/uibase/docvw/docvw.cxx
+++ b/sw/qa/uibase/docvw/docvw.cxx
@@ -48,7 +48,7 @@ CPPUNIT_TEST_FIXTURE(Test, testShiftClickOnImage)
     pWrtShell->SttEndDoc(/*bStt=*/false);
 
     // When shift-clicking on that fly frame:
-    auto& rSpzFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rSpzFormats = *pDoc->GetSpzFrameFormats();
     auto pFrameFormat = dynamic_cast<SwFlyFrameFormat*>(rSpzFormats[0]);
     CPPUNIT_ASSERT(pFrameFormat);
     SwFlyFrame* pFlyFrame = pFrameFormat->GetFrame();
@@ -163,7 +163,7 @@ CPPUNIT_TEST_FIXTURE(Test, testShiftDoubleClickOnImage)
     xRegistration->registerDispatchProviderInterceptor(pInterceptor);
 
     // When shift-double-clicking on that fly frame:
-    auto& rSpzFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rSpzFormats = *pDoc->GetSpzFrameFormats();
     auto pFrameFormat = dynamic_cast<SwFlyFrameFormat*>(rSpzFormats[0]);
     CPPUNIT_ASSERT(pFrameFormat);
     SwFlyFrame* pFlyFrame = pFrameFormat->GetFrame();
diff --git a/sw/qa/uibase/uno/uno.cxx b/sw/qa/uibase/uno/uno.cxx
index 6ad35e07466a..b9f03d42d5ee 100644
--- a/sw/qa/uibase/uno/uno.cxx
+++ b/sw/qa/uibase/uno/uno.cxx
@@ -149,8 +149,8 @@ CPPUNIT_TEST_FIXTURE(SwUibaseUnoTest, 
testCreateTextRangeByPixelPositionGraphic)
         = xController->createTextRangeByPixelPosition(aPoint);
 
     // Then make sure that the anchor of the image is returned:
-    const auto& rFormats = *pDoc->GetSpzFrameFormats();
-    const auto pFormat = rFormats[0];
+    const SwFrameFormats& rFormats = *pDoc->GetSpzFrameFormats();
+    const SwFrameFormat* pFormat = rFormats[0];
     SwPosition aAnchorPos(*pFormat->GetAnchor().GetContentAnchor());
     auto pTextRange = dynamic_cast<SwXTextRange*>(xTextRange.get());
     SwPaM aPaM(pDoc->GetNodes());
diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx
index 7a1b94af15ef..c5c0c741f5dd 100644
--- a/sw/source/core/crsr/crstrvl.cxx
+++ b/sw/source/core/crsr/crstrvl.cxx
@@ -2746,9 +2746,10 @@ bool SwCursorShell::SelectNxtPrvHyperlink( bool bNext )
 
     // then check all the Flys with a URL or image map
     {
-        for(sw::SpzFrameFormat* pSpz: *GetDoc()->GetSpzFrameFormats())
+        const SwFrameFormats* pFormats = GetDoc()->GetSpzFrameFormats();
+        for( SwFrameFormats::size_type n = 0, nEnd = pFormats->size(); n < 
nEnd; ++n )
         {
-            auto pFormat = static_cast<SwFlyFrameFormat*>(pSpz);
+            SwFlyFrameFormat* pFormat = 
static_cast<SwFlyFrameFormat*>((*pFormats)[ n ]);
             const SwFormatURL& rURLItem = pFormat->GetURL();
             if( rURLItem.GetMap() || !rURLItem.GetURL().isEmpty() )
             {
diff --git a/sw/source/core/doc/CntntIdxStore.cxx 
b/sw/source/core/doc/CntntIdxStore.cxx
index d87e0c2f2374..dd71aba69cc9 100644
--- a/sw/source/core/doc/CntntIdxStore.cxx
+++ b/sw/source/core/doc/CntntIdxStore.cxx
@@ -370,12 +370,12 @@ void ContentIdxStoreImpl::SaveFlys(SwDoc& rDoc, 
SwNodeOffset nNode, sal_Int32 nC
 
 void ContentIdxStoreImpl::RestoreFlys(SwDoc& rDoc, updater_t const & rUpdater, 
bool bAuto, bool bAtStart)
 {
-    sw::SpzFrameFormats* pSpz = rDoc.GetSpzFrameFormats();
+    SwFrameFormats* pSpz = rDoc.GetSpzFrameFormats();
     for (const MarkEntry& aEntry : m_aFlyEntries)
     {
         if(!aEntry.m_bOther)
         {
-            sw::SpzFrameFormat* pFrameFormat = (*pSpz)[ aEntry.m_nIdx ];
+            SwFrameFormat *pFrameFormat = (*pSpz)[ aEntry.m_nIdx ];
             const SwFormatAnchor& rFlyAnchor = pFrameFormat->GetAnchor();
             if( rFlyAnchor.GetContentAnchor() )
             {
diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx 
b/sw/source/core/doc/DocumentContentOperationsManager.cxx
index 3a158e26a9a1..3d86d7ffec8f 100644
--- a/sw/source/core/doc/DocumentContentOperationsManager.cxx
+++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx
@@ -101,9 +101,11 @@ namespace
     bool lcl_ChkFlyFly( SwDoc& rDoc, SwNodeOffset nSttNd, SwNodeOffset nEndNd,
                         SwNodeOffset nInsNd )
     {
+        const SwFrameFormats& rFrameFormatTable = *rDoc.GetSpzFrameFormats();
 
-        for(sw::SpzFrameFormat* pFormat: *rDoc.GetSpzFrameFormats())
+        for( size_t n = 0; n < rFrameFormatTable.size(); ++n )
         {
+            SwFrameFormat const*const  pFormat = rFrameFormatTable[n];
             SwFormatAnchor const*const pAnchor = &pFormat->GetAnchor();
             SwNode const*const pAnchorNode = pAnchor->GetAnchorNode();
             if (pAnchorNode &&
@@ -2308,7 +2310,7 @@ bool DocumentContentOperationsManager::DelFullPara( 
SwPaM& rPam )
             // If there are FlyFrames left, delete these too
             for( size_t n = 0; n < m_rDoc.GetSpzFrameFormats()->size(); ++n )
             {
-                sw::SpzFrameFormat* pFly = (*m_rDoc.GetSpzFrameFormats())[n];
+                SwFrameFormat* pFly = (*m_rDoc.GetSpzFrameFormats())[n];
                 const SwFormatAnchor* pAnchor = &pFly->GetAnchor();
                 SwNode const*const pAnchorNode = pAnchor->GetAnchorNode();
                 if (pAnchorNode &&
diff --git a/sw/source/core/doc/DocumentLayoutManager.cxx 
b/sw/source/core/doc/DocumentLayoutManager.cxx
index 6959b7c7ba3a..e0366bdd3a0b 100644
--- a/sw/source/core/doc/DocumentLayoutManager.cxx
+++ b/sw/source/core/doc/DocumentLayoutManager.cxx
@@ -248,19 +248,20 @@ void DocumentLayoutManager::DelLayoutFormat( 
SwFrameFormat *pFormat )
                 pContentIdx = pFormat->GetContent().GetContentIdx();
             if (pContentIdx)
             {
-                sw::SpzFrameFormats* pSpzs = 
pFormat->GetDoc()->GetSpzFrameFormats();
-                if ( pSpzs )
+                const SwFrameFormats* pTable = 
pFormat->GetDoc()->GetSpzFrameFormats();
+                if ( pTable )
                 {
                     std::vector<SwFrameFormat*> aToDeleteFrameFormats;
                     const SwNodeOffset nNodeIdxOfFlyFormat( 
pContentIdx->GetIndex() );
 
-                    for(sw::SpzFrameFormat* pSpz: *pSpzs)
+                    for ( size_t i = 0; i < pTable->size(); ++i )
                     {
-                        const SwFormatAnchor &rAnch = pSpz->GetAnchor();
+                        SwFrameFormat* pTmpFormat = (*pTable)[i];
+                        const SwFormatAnchor &rAnch = pTmpFormat->GetAnchor();
                         if ( rAnch.GetAnchorId() == RndStdIds::FLY_AT_FLY &&
                              rAnch.GetAnchorNode()->GetIndex() == 
nNodeIdxOfFlyFormat )
                         {
-                            aToDeleteFrameFormats.push_back(pSpz);
+                            aToDeleteFrameFormats.push_back( pTmpFormat );
                         }
                     }
 
diff --git a/sw/source/core/doc/dbgoutsw.cxx b/sw/source/core/doc/dbgoutsw.cxx
index 1c8e5327d4aa..8b1f18348796 100644
--- a/sw/source/core/doc/dbgoutsw.cxx
+++ b/sw/source/core/doc/dbgoutsw.cxx
@@ -407,14 +407,15 @@ static OUString lcl_AnchoredFrames(const SwNode & rNode)
     OUStringBuffer aResult("[");
 
     const SwDoc& rDoc = rNode.GetDoc();
-    const sw::SpzFrameFormats* pSpzs = rDoc.GetSpzFrameFormats();
+    const SwFrameFormats * pFrameFormats = rDoc.GetSpzFrameFormats();
 
-    if (pSpzs)
+    if (pFrameFormats)
     {
         bool bFirst = true;
-        for(const sw::SpzFrameFormat* pSpz: *pSpzs)
+        for (SwFrameFormats::const_iterator i(pFrameFormats->begin());
+             i != pFrameFormats->end(); ++i)
         {
-            const SwFormatAnchor& rAnchor = pSpz->GetAnchor();
+            const SwFormatAnchor & rAnchor = (*i)->GetAnchor();
             const SwNode * pPos = rAnchor.GetAnchorNode();
 
             if (pPos && *pPos == rNode)
@@ -422,8 +423,8 @@ static OUString lcl_AnchoredFrames(const SwNode & rNode)
                 if (! bFirst)
                     aResult.append(", ");
 
-                if (pSpz)
-                    aResult.append(lcl_dbg_out(*pSpz));
+                if (*i)
+                    aResult.append(lcl_dbg_out(**i));
                 bFirst = false;
             }
         }
diff --git a/sw/source/core/doc/docbasic.cxx b/sw/source/core/doc/docbasic.cxx
index c28a15f12bf5..6bf54c6b6e5a 100644
--- a/sw/source/core/doc/docbasic.cxx
+++ b/sw/source/core/doc/docbasic.cxx
@@ -157,10 +157,10 @@ sal_uInt16 SwDoc::CallEvent( SvMacroItemId nEvent, const 
SwCallMouseEvent& rCall
     case EVENT_OBJECT_URLITEM:
     case EVENT_OBJECT_IMAGE:
         {
-            const auto pSpz = static_cast<const 
sw::SpzFrameFormat*>(rCallEvent.PTR.pFormat);
+            const SwFrameFormat* pFormat = rCallEvent.PTR.pFormat;
             if( bCheckPtr )
             {
-                if (GetSpzFrameFormats()->IsAlive(pSpz))
+                if (GetSpzFrameFormats()->IsAlive(pFormat))
                     bCheckPtr = false;      // misuse as a flag
                 else
                     // this shouldn't be possible now that SwCallMouseEvent
@@ -168,7 +168,7 @@ sal_uInt16 SwDoc::CallEvent( SvMacroItemId nEvent, const 
SwCallMouseEvent& rCall
                     assert(false);
             }
             if( !bCheckPtr )
-                pTable = &pSpz->GetMacro().GetMacroTable();
+                pTable = &pFormat->GetMacro().GetMacroTable();
         }
         break;
 
@@ -177,10 +177,10 @@ sal_uInt16 SwDoc::CallEvent( SvMacroItemId nEvent, const 
SwCallMouseEvent& rCall
             const IMapObject* pIMapObj = rCallEvent.PTR.IMAP.pIMapObj;
             if( bCheckPtr )
             {
-                const auto pSpz = static_cast<const 
sw::SpzFrameFormat*>(rCallEvent.PTR.IMAP.pFormat);
-                if (GetSpzFrameFormats()->IsAlive(pSpz))
+                const SwFrameFormat* pFormat = rCallEvent.PTR.IMAP.pFormat;
+                if (GetSpzFrameFormats()->IsAlive(pFormat))
                 {
-                    const ImageMap* pIMap = pSpz->GetURL().GetMap();
+                    const ImageMap* pIMap = pFormat->GetURL().GetMap();
                     if (pIMap)
                     {
                         for( size_t nPos = pIMap->GetIMapObjectCount(); nPos; )
diff --git a/sw/source/core/doc/doccomp.cxx b/sw/source/core/doc/doccomp.cxx
index 2941112bc5d8..1779ec998300 100644
--- a/sw/source/core/doc/doccomp.cxx
+++ b/sw/source/core/doc/doccomp.cxx
@@ -1795,14 +1795,14 @@ namespace
                                   std::make_shared<CompareMainText>(rDestDoc, 
true));
 
         //if we have the same number of frames then try to compare within them
-        const sw::SpzFrameFormats* pSrcFrameFormats = 
rSrcDoc.GetSpzFrameFormats();
-        const sw::SpzFrameFormats* pDestFrameFormats = 
rDestDoc.GetSpzFrameFormats();
+        const SwFrameFormats *pSrcFrameFormats = rSrcDoc.GetSpzFrameFormats();
+        const SwFrameFormats *pDestFrameFormats = 
rDestDoc.GetSpzFrameFormats();
         if (pSrcFrameFormats->size() == pDestFrameFormats->size())
         {
-            for(sw::FrameFormats<sw::SpzFrameFormat*>::size_type i = 0; i < 
pSrcFrameFormats->size(); ++i)
+            for (size_t i = 0; i < pSrcFrameFormats->size(); ++i)
             {
-                const sw::SpzFrameFormat& rSrcFormat = *(*pSrcFrameFormats)[i];
-                const sw::SpzFrameFormat& rDestFormat = 
*(*pDestFrameFormats)[i];
+                const SwFrameFormat& rSrcFormat = *(*pSrcFrameFormats)[i];
+                const SwFrameFormat& rDestFormat = *(*pDestFrameFormats)[i];
                 const SwNodeIndex* pSrcIdx = 
rSrcFormat.GetContent().GetContentIdx();
                 const SwNodeIndex* pDestIdx = 
rDestFormat.GetContent().GetContentIdx();
                 if (!pSrcIdx && !pDestIdx)
diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx
index 3994f2af8aac..a93000b679fc 100644
--- a/sw/source/core/doc/docedt.cxx
+++ b/sw/source/core/doc/docedt.cxx
@@ -93,7 +93,7 @@ void RestFlyInRange( SaveFlyArr & rArr, const SwPosition& 
rStartPos,
         }
 
         aAnchor.SetAnchor( &aPos );
-        
pFormat->GetDoc()->GetSpzFrameFormats()->push_back(static_cast<sw::SpzFrameFormat*>(pFormat));
+        pFormat->GetDoc()->GetSpzFrameFormats()->push_back( pFormat );
         // SetFormatAttr should call Modify() and add it to the node
         pFormat->SetFormatAttr( aAnchor );
         SwContentNode* pCNd = aPos.GetNode().GetContentNode();
@@ -105,11 +105,11 @@ void RestFlyInRange( SaveFlyArr & rArr, const SwPosition& 
rStartPos,
 
 void SaveFlyInRange( const SwNodeRange& rRg, SaveFlyArr& rArr )
 {
-    sw::SpzFrameFormats& rSpzs = 
*rRg.aStart.GetNode().GetDoc().GetSpzFrameFormats();
-    for(sw::FrameFormats<sw::SpzFrameFormat*>::size_type n = 0; n < 
rSpzs.size(); ++n )
+    SwFrameFormats& rFormats = 
*rRg.aStart.GetNode().GetDoc().GetSpzFrameFormats();
+    for( SwFrameFormats::size_type n = 0; n < rFormats.size(); ++n )
     {
-        auto pSpz = rSpzs[n];
-        SwFormatAnchor const*const pAnchor = &pSpz->GetAnchor();
+        SwFrameFormat *const pFormat = rFormats[n];
+        SwFormatAnchor const*const pAnchor = &pFormat->GetAnchor();
         SwNode const*const pAnchorNode = pAnchor->GetAnchorNode();
         if (pAnchorNode &&
             ((RndStdIds::FLY_AT_PARA == pAnchor->GetAnchorId()) ||
@@ -120,14 +120,14 @@ void SaveFlyInRange( const SwNodeRange& rRg, SaveFlyArr& 
rArr )
                             (RndStdIds::FLY_AT_CHAR == pAnchor->GetAnchorId())
                                 ? pAnchor->GetAnchorContentOffset()
                                 : 0,
-                            pSpz, false );
+                            pFormat, false );
             rArr.push_back( aSave );
-            pSpz->DelFrames();
+            pFormat->DelFrames();
             // set a dummy anchor position to maintain anchoring invariants
-            SwFormatAnchor aAnchor( pSpz->GetAnchor() );
+            SwFormatAnchor aAnchor( pFormat->GetAnchor() );
             aAnchor.SetAnchor(nullptr);
-            pSpz->SetFormatAttr(aAnchor);
-            rSpzs.erase( rSpzs.begin() + n-- );
+            pFormat->SetFormatAttr(aAnchor);
+            rFormats.erase( rFormats.begin() + n-- );
         }
     }
     sw::CheckAnchoredFlyConsistency(rRg.aStart.GetNode().GetDoc());
@@ -136,8 +136,8 @@ void SaveFlyInRange( const SwNodeRange& rRg, SaveFlyArr& 
rArr )
 void SaveFlyInRange( const SwPaM& rPam, const SwPosition& rInsPos,
         SaveFlyArr& rArr, bool bMoveAllFlys, SwHistory *const pHistory)
 {
-    sw::SpzFrameFormats& rFormats = 
*rPam.GetPoint()->GetNode().GetDoc().GetSpzFrameFormats();
-    sw::SpzFrameFormat* pFormat;
+    SwFrameFormats& rFormats = 
*rPam.GetPoint()->GetNode().GetDoc().GetSpzFrameFormats();
+    SwFrameFormat* pFormat;
     const SwFormatAnchor* pAnchor;
 
     const SwPosition* pPos = rPam.Start();
@@ -220,10 +220,10 @@ void DelFlyInRange( SwNode& rMkNd,
     SwPosition const& rEnd   = mark <= point ? point : mark;
 
     SwDoc& rDoc = rMkNd.GetDoc();
-    sw::SpzFrameFormats& rTable = *rDoc.GetSpzFrameFormats();
+    SwFrameFormats& rTable = *rDoc.GetSpzFrameFormats();
     for ( auto i = rTable.size(); i; )
     {
-        sw::SpzFrameFormat* pFormat = rTable[--i];
+        SwFrameFormat *pFormat = rTable[--i];
         const SwFormatAnchor &rAnch = pFormat->GetAnchor();
         SwPosition const*const pAPos = rAnch.GetContentAnchor();
         if (pAPos &&
@@ -248,7 +248,7 @@ void DelFlyInRange( SwNode& rMkNd,
                 if (i > rTable.size())
                     i = rTable.size();
                 else if (i == rTable.size() || pFormat != rTable[i])
-                    i = std::distance(rTable.begin(), rTable.find(pFormat));
+                    i = std::distance(rTable.begin(), rTable.find( pFormat ));
             }
 
             rDoc.getIDocumentLayoutAccess().DelLayoutFormat( pFormat );
diff --git a/sw/source/core/doc/docfly.cxx b/sw/source/core/doc/docfly.cxx
index 1d425e62f73d..998f123ee6c0 100644
--- a/sw/source/core/doc/docfly.cxx
+++ b/sw/source/core/doc/docfly.cxx
@@ -67,11 +67,15 @@ using namespace ::com::sun::star;
 
 size_t SwDoc::GetFlyCount( FlyCntType eType, bool bIgnoreTextBoxes ) const
 {
+    const SwFrameFormats& rFormats = *GetSpzFrameFormats();
+    const size_t nSize = rFormats.size();
     size_t nCount = 0;
     const SwNodeIndex* pIdx;
 
-    for(sw::SpzFrameFormat* pFlyFormat: *GetSpzFrameFormats())
+    for ( size_t i = 0; i < nSize; ++i)
     {
+        const SwFrameFormat* pFlyFormat = rFormats[ i ];
+
         if (bIgnoreTextBoxes && SwTextBoxHelper::isTextBox(pFlyFormat, 
RES_FLYFRMFMT))
             continue;
 
@@ -110,12 +114,16 @@ size_t SwDoc::GetFlyCount( FlyCntType eType, bool 
bIgnoreTextBoxes ) const
 /// @attention If you change this, also update SwXFrameEnumeration in unocoll.
 SwFrameFormat* SwDoc::GetFlyNum( size_t nIdx, FlyCntType eType, bool 
bIgnoreTextBoxes )
 {
+    SwFrameFormats& rFormats = *GetSpzFrameFormats();
     SwFrameFormat* pRetFormat = nullptr;
+    const size_t nSize = rFormats.size();
     const SwNodeIndex* pIdx;
     size_t nCount = 0;
 
-    for(sw::SpzFrameFormat* pFlyFormat: *GetSpzFrameFormats())
+    for( size_t i = 0; !pRetFormat && i < nSize; ++i )
     {
+        SwFrameFormat* pFlyFormat = rFormats[ i ];
+
         if (bIgnoreTextBoxes && SwTextBoxHelper::isTextBox(pFlyFormat, 
RES_FLYFRMFMT))
             continue;
 
@@ -151,11 +159,16 @@ SwFrameFormat* SwDoc::GetFlyNum( size_t nIdx, FlyCntType 
eType, bool bIgnoreText
 std::vector<SwFrameFormat const*> SwDoc::GetFlyFrameFormats(
     FlyCntType const eType, bool const bIgnoreTextBoxes)
 {
+    SwFrameFormats& rFormats = *GetSpzFrameFormats();
+    const size_t nSize = rFormats.size();
+
     std::vector<SwFrameFormat const*> ret;
-    ret.reserve(GetSpzFrameFormats()->size());
+    ret.reserve(nSize);
 
-    for(sw::SpzFrameFormat* pFlyFormat: *GetSpzFrameFormats())
+    for (size_t i = 0; i < nSize; ++i)
     {
+        SwFrameFormat const*const pFlyFormat = rFormats[ i ];
+
         if (bIgnoreTextBoxes && SwTextBoxHelper::isTextBox(pFlyFormat, 
RES_FLYFRMFMT))
         {
             continue;
@@ -1012,7 +1025,7 @@ SwChainRet SwDoc::Chainable( const SwFrameFormat 
&rSource, const SwFrameFormat &
         return SwChainRet::NOT_EMPTY;
     }
 
-    for(sw::SpzFrameFormat* pSpzFrameFm: *GetSpzFrameFormats())
+    for( auto pSpzFrameFm : *GetSpzFrameFormats() )
     {
         const SwFormatAnchor& rAnchor = pSpzFrameFm->GetAnchor();
         // #i20622# - to-frame anchored objects are allowed.
diff --git a/sw/source/core/doc/docfmt.cxx b/sw/source/core/doc/docfmt.cxx
index a0111f537469..aa737661d6dc 100644
--- a/sw/source/core/doc/docfmt.cxx
+++ b/sw/source/core/doc/docfmt.cxx
@@ -723,14 +723,13 @@ void SwDoc::DelFrameFormat( SwFrameFormat *pFormat, bool 
bBroadcast )
         }
         else
         {
-            auto pSpz = static_cast<sw::SpzFrameFormat*>(pFormat);
-            if(GetSpzFrameFormats()->ContainsFormat(pSpz))
+            bool contains = GetSpzFrameFormats()->ContainsFormat(*pFormat);
+            OSL_ENSURE( contains, "FrameFormat not found." );
+            if( contains )
             {
-                GetSpzFrameFormats()->erase(pSpz);
-                delete pSpz;
+                GetSpzFrameFormats()->erase( pFormat );
+                delete pFormat;
             }
-            else
-                SAL_WARN("sw", "FrameFormat not found.");
         }
     }
 }
diff --git a/sw/source/core/doc/doclay.cxx b/sw/source/core/doc/doclay.cxx
index c56eae683a9c..94229dbc968f 100644
--- a/sw/source/core/doc/doclay.cxx
+++ b/sw/source/core/doc/doclay.cxx
@@ -501,7 +501,7 @@ SwPosFlyFrames SwDoc::GetAllFlyFormats( const SwPaM* 
pCmpRange, bool bDrawAlso,
     SwPosFlyFrames aRetval;
 
     // collect all anchored somehow to paragraphs
-    for(sw::SpzFrameFormat* pFly: *GetSpzFrameFormats())
+    for( auto pFly : *GetSpzFrameFormats() )
     {
         bool bDrawFormat = bDrawAlso && RES_DRAWFRMFMT == pFly->Which();
         bool bFlyFormat = RES_FLYFRMFMT == pFly->Which();
@@ -1350,11 +1350,14 @@ static OUString lcl_GetUniqueFlyName(const SwDoc& rDoc, 
TranslateId pDefStrId, s
     OUString aName(SwResId(pDefStrId));
     sal_Int32 nNmLen = aName.getLength();
 
+    const SwFrameFormats& rFormats = *rDoc.GetSpzFrameFormats();
+
     std::vector<unsigned int> aUsedNums;
-    aUsedNums.reserve(rDoc.GetSpzFrameFormats()->size());
+    aUsedNums.reserve(rFormats.size());
 
-    for(sw::SpzFrameFormat* pFlyFormat: *rDoc.GetSpzFrameFormats())
+    for( SwFrameFormats::size_type n = 0; n < rFormats.size(); ++n )
     {
+        const SwFrameFormat* pFlyFormat = rFormats[ n ];
         if (eType != pFlyFormat->Which())
             continue;
         if (eType == RES_DRAWFRMFMT)
@@ -1574,7 +1577,7 @@ bool SwDoc::IsInHeaderFooter( const SwNode& rIdx ) const
         // get up by using the Anchor
 #if OSL_DEBUG_LEVEL > 0
         std::vector<const SwFrameFormat*> checkFormats;
-        for(sw::SpzFrameFormat* pFormat: *GetSpzFrameFormats())
+        for( auto pFormat : *GetSpzFrameFormats() )
         {
             const SwNodeIndex* pIdx = pFormat->GetContent().GetContentIdx();
             if( pIdx && pFlyNd == &pIdx->GetNode() )
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index bfc8c71dfe48..5884616e9ee9 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -234,7 +234,7 @@ SwDoc::SwDoc()
     mpDfltGrfFormatColl( new SwGrfFormatColl( GetAttrPool(), 
"Graphikformatvorlage" ) ),
     mpFrameFormatTable( new SwFrameFormats() ),
     mpCharFormatTable( new SwCharFormats ),
-    mpSpzFrameFormatTable( new sw::FrameFormats<sw::SpzFrameFormat*>() ),
+    mpSpzFrameFormatTable( new SwFrameFormats() ),
     mpSectionFormatTable( new SwSectionFormats ),
     mpTableFrameFormatTable( new sw::TableFrameFormats() ),
     mpTextFormatCollTable( new SwTextFormatColls() ),
@@ -1291,7 +1291,7 @@ SwNodeIndex SwDoc::AppendDoc(const SwDoc& rSource, 
sal_uInt16 const nStartPageNu
         }
 
         // finally copy page bound frames
-        for(sw::SpzFrameFormat* pCpyFormat: *rSource.GetSpzFrameFormats())
+        for ( auto pCpyFormat : *rSource.GetSpzFrameFormats() )
         {
             const SwFrameFormat& rCpyFormat = *pCpyFormat;
             SwFormatAnchor aAnchor( rCpyFormat.GetAnchor() );
diff --git a/sw/source/core/doc/docsort.cxx b/sw/source/core/doc/docsort.cxx
index d22ab372e323..3601c119bbb3 100644
--- a/sw/source/core/doc/docsort.cxx
+++ b/sw/source/core/doc/docsort.cxx
@@ -286,7 +286,7 @@ bool SwDoc::SortText(const SwPaM& rPaM, const 
SwSortOptions& rOpt)
     auto [pStart, pEnd] = rPaM.StartEnd(); // SwPosition*
 
     // Set index to the Selection's start
-    for(sw::SpzFrameFormat* pFormat: *GetSpzFrameFormats())
+    for ( const auto *pFormat : *GetSpzFrameFormats() )
     {
         SwFormatAnchor const*const pAnchor = &pFormat->GetAnchor();
         SwNode const*const pAnchorNode = pAnchor->GetAnchorNode();
diff --git a/sw/source/core/doc/tblcpy.cxx b/sw/source/core/doc/tblcpy.cxx
index 0b11ea6c80d2..c39d9c387a3c 100644
--- a/sw/source/core/doc/tblcpy.cxx
+++ b/sw/source/core/doc/tblcpy.cxx
@@ -540,7 +540,7 @@ static void lcl_CpyBox( const SwTable& rCpyTable, const 
SwTableBox* pCpyBox,
         }
 
         // If we still have FlyFrames hanging around, delete them too
-        for(sw::SpzFrameFormat* pFly: *pDoc->GetSpzFrameFormats())
+        for( const auto pFly : *pDoc->GetSpzFrameFormats() )
         {
             SwFormatAnchor const*const pAnchor = &pFly->GetAnchor();
             SwNode const*const pAnchorNode = pAnchor->GetAnchorNode();
diff --git a/sw/source/core/doc/textboxhelper.cxx 
b/sw/source/core/doc/textboxhelper.cxx
index e87a28ba4cfd..98fc0512acfd 100644
--- a/sw/source/core/doc/textboxhelper.cxx
+++ b/sw/source/core/doc/textboxhelper.cxx
@@ -349,7 +349,8 @@ sal_Int32 SwTextBoxHelper::getCount(SdrPage const* pPage)
 sal_Int32 SwTextBoxHelper::getCount(const SwDoc& rDoc)
 {
     sal_Int32 nRet = 0;
-    for (const sw::SpzFrameFormat* pFormat : *rDoc.GetSpzFrameFormats())
+    const SwFrameFormats& rSpzFrameFormats = *rDoc.GetSpzFrameFormats();
+    for (const auto pFormat : rSpzFrameFormats)
     {
         if (isTextBox(pFormat, RES_FLYFRMFMT))
             ++nRet;
@@ -959,7 +960,7 @@ void SwTextBoxHelper::syncProperty(SwFrameFormat* pShape, 
sal_uInt16 nWID, sal_u
     xPropertySet->setPropertyValue(aPropertyName, aValue);
 }
 
-void SwTextBoxHelper::saveLinks(const sw::FrameFormats<sw::SpzFrameFormat*>& 
rFormats,
+void SwTextBoxHelper::saveLinks(const SwFrameFormats& rFormats,
                                 std::map<const SwFrameFormat*, const 
SwFrameFormat*>& rLinks)
 {
     for (const auto pFormat : rFormats)
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index 8e055c5242bc..b9ae26a0e421 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -1662,7 +1662,8 @@ bool SwNodes::TableToText( const SwNodeRange& rRange, 
sal_Unicode cCh,
 
     // #i28006# Fly frames have to be restored even if the table was
     // #alone in the section
-    for(sw::SpzFrameFormat* pFly: *GetDoc().GetSpzFrameFormats())
+    const SwFrameFormats& rFlyArr = *GetDoc().GetSpzFrameFormats();
+    for( auto pFly : rFlyArr )
     {
         SwFrameFormat *const pFormat = pFly;
         const SwFormatAnchor& rAnchor = pFormat->GetAnchor();
diff --git a/sw/source/core/docnode/node.cxx b/sw/source/core/docnode/node.cxx
index b69dec062a1f..91ac1697ea30 100644
--- a/sw/source/core/docnode/node.cxx
+++ b/sw/source/core/docnode/node.cxx
@@ -547,15 +547,16 @@ const SwPageDesc* SwNode::FindPageDesc( SwNodeOffset* 
pPgDescNdIdx ) const
         {
             // Find the right Anchor first
             const SwFrameFormat* pFormat = nullptr;
-            const sw::SpzFrameFormats& rFormats = *rDoc.GetSpzFrameFormats();
+            const SwFrameFormats& rFormats = *rDoc.GetSpzFrameFormats();
 
-            for(sw::SpzFrameFormat* pSpz: rFormats)
+            for( size_t n = 0; n < rFormats.size(); ++n )
             {
-                const SwFormatContent& rContent = pSpz->GetContent();
+                const SwFrameFormat* pFrameFormat = rFormats[ n ];
+                const SwFormatContent& rContent = pFrameFormat->GetContent();
                 if( rContent.GetContentIdx() &&
                     &rContent.GetContentIdx()->GetNode() == static_cast<SwNode 
const *>(pSttNd) )
                 {
-                    pFormat = pSpz;
+                    pFormat = pFrameFormat;
                     break;
                 }
             }
@@ -750,17 +751,18 @@ SwFrameFormat* SwNode::GetFlyFormat() const
         if( !pRet )
         {
             // The hard way through the Doc is our last way out
-            const sw::SpzFrameFormats& rSpzs = *GetDoc().GetSpzFrameFormats();
-            for(sw::SpzFrameFormat* pSpz: rSpzs)
+            const SwFrameFormats& rFrameFormatTable = 
*GetDoc().GetSpzFrameFormats();
+            for( size_t n = 0; n < rFrameFormatTable.size(); ++n )
             {
+                SwFrameFormat* pFormat = rFrameFormatTable[n];
                 // Only Writer fly frames can contain Writer nodes.
-                if (pSpz->Which() != RES_FLYFRMFMT)
+                if (pFormat->Which() != RES_FLYFRMFMT)
                     continue;
-                const SwFormatContent& rContent = pSpz->GetContent();
+                const SwFormatContent& rContent = pFormat->GetContent();
                 if( rContent.GetContentIdx() &&
                     &rContent.GetContentIdx()->GetNode() == pSttNd )
                 {
-                    pRet = pSpz;
+                    pRet = pFormat;
                     break;
                 }
             }
diff --git a/sw/source/core/draw/dcontact.cxx b/sw/source/core/draw/dcontact.cxx
index 5432119d8591..8675f62e72c9 100644
--- a/sw/source/core/draw/dcontact.cxx
+++ b/sw/source/core/draw/dcontact.cxx
@@ -751,10 +751,10 @@ SwDrawContact::~SwDrawContact()
 
 void SwDrawContact::GetTextObjectsFromFormat(std::list<SdrTextObj*>& 
o_rTextObjects, SwDoc& rDoc)
 {
-    for(sw::SpzFrameFormat* pFly: *rDoc.GetSpzFrameFormats())
+    for(auto& rpFly : *rDoc.GetSpzFrameFormats())
     {
-        if(dynamic_cast<const SwDrawFrameFormat*>(pFly))
-            
pFly->CallSwClientNotify(sw::CollectTextObjectsHint(o_rTextObjects));
+        if(dynamic_cast<const SwDrawFrameFormat*>(rpFly))
+            
rpFly->CallSwClientNotify(sw::CollectTextObjectsHint(o_rTextObjects));
     }
 }
 
@@ -1877,7 +1877,8 @@ void SwDrawContact::ConnectToLayout( const 
SwFormatAnchor* pAnch )
                         else
                         {
                             const SwNode& rIdx = *pAnch->GetAnchorNode();
-                            for(sw::SpzFrameFormat* pFlyFormat 
:*(pDrawFrameFormat->GetDoc()->GetSpzFrameFormats()))
+                            SwFrameFormats& rFormats = 
*(pDrawFrameFormat->GetDoc()->GetSpzFrameFormats());
+                            for( auto pFlyFormat : rFormats )
                             {
                                 if( pFlyFormat->GetContent().GetContentIdx() &&
                                     rIdx == 
pFlyFormat->GetContent().GetContentIdx()->GetNode() )
diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx
index d5c03a14f1e0..11a3d945d447 100644
--- a/sw/source/core/frmedt/fecopy.cxx
+++ b/sw/source/core/frmedt/fecopy.cxx
@@ -93,7 +93,7 @@ void SwFEShell::Copy( SwDoc& rClpDoc, const OUString* 
pNewClpText )
     }
 
     // also delete surrounding FlyFrames if any
-    for(sw::SpzFrameFormat* pFly : *rClpDoc.GetSpzFrameFormats() )
+    for( const auto pFly : *rClpDoc.GetSpzFrameFormats() )
     {
         SwFormatAnchor const*const pAnchor = &pFly->GetAnchor();
         SwNode const*const pAnchorNode = pAnchor->GetAnchorNode();
@@ -144,13 +144,13 @@ void SwFEShell::Copy( SwDoc& rClpDoc, const OUString* 
pNewClpText )
 
         // assure the "RootFormat" is the first element in Spz-Array
         // (if necessary Flys were copied in Flys)
-        sw::SpzFrameFormats& rSpzFrameFormats = *rClpDoc.GetSpzFrameFormats();
+        SwFrameFormats& rSpzFrameFormats = *rClpDoc.GetSpzFrameFormats();
         if( rSpzFrameFormats[ 0 ] != pFlyFormat )
         {
 #ifndef NDEBUG
             bool inserted =
 #endif
-            
rSpzFrameFormats.newDefault(static_cast<sw::SpzFrameFormat*>(pFlyFormat));
+            rSpzFrameFormats.newDefault( pFlyFormat );
             assert( !inserted && "Fly not contained in Spz-Array" );
         }
 
@@ -688,7 +688,7 @@ namespace {
             return false;
         }
 
-        for(const sw::SpzFrameFormat* pSpzFormat: 
*pFormat->GetDoc()->GetSpzFrameFormats())
+        for ( const auto& pSpzFormat : 
*pFormat->GetDoc()->GetSpzFrameFormats() )
         {
             if (pSpzFormat->Which() != RES_FLYFRMFMT)
             {
@@ -1043,7 +1043,7 @@ bool SwFEShell::Paste(SwDoc& rClpDoc, bool bNestedTable)
                 if(!Imp()->GetDrawView())
                     MakeDrawView();
                 ::std::vector<SwFrameFormat*> inserted;
-                for (sw::SpzFrameFormat* pFlyFormat: 
*rClpDoc.GetSpzFrameFormats())
+                for (auto const pFlyFormat : *rClpDoc.GetSpzFrameFormats())
                 {
                     // if anchored inside other fly, will be copied when 
copying
                     // top-level fly, so skip here! (other non-body anchor
@@ -1203,7 +1203,7 @@ void SwFEShell::PastePages( SwFEShell& rToFill, 
sal_uInt16 nStartPage, sal_uInt1
         if( !rToFill.Imp()->GetDrawView() )
             rToFill.MakeDrawView();
 
-        for(sw::SpzFrameFormat* pCpyFormat: *GetDoc()->GetSpzFrameFormats())
+        for ( auto pCpyFormat : *GetDoc()->GetSpzFrameFormats() )
         {
             SwFormatAnchor aAnchor( pCpyFormat->GetAnchor() );
             if ((RndStdIds::FLY_AT_PAGE == aAnchor.GetAnchorId()) &&
diff --git a/sw/source/core/frmedt/fefly1.cxx b/sw/source/core/frmedt/fefly1.cxx
index 92f41ef0597e..3e1bb21df9f8 100644
--- a/sw/source/core/frmedt/fefly1.cxx
+++ b/sw/source/core/frmedt/fefly1.cxx
@@ -1004,7 +1004,7 @@ void SwFEShell::GetPageObjs( std::vector<SwFrameFormat*>& 
rFillArr )
 {
     rFillArr.clear();
 
-    for(sw::SpzFrameFormat* pFormat : *mxDoc->GetSpzFrameFormats() )
+    for( auto pFormat : *mxDoc->GetSpzFrameFormats() )
     {
         if (RndStdIds::FLY_AT_PAGE == pFormat->GetAnchor().GetAnchorId())
         {
@@ -1026,7 +1026,7 @@ void SwFEShell::SetPageObjsNewPage( 
std::vector<SwFrameFormat*>& rFillArr )
     bool bTmpAssert = false;
     for( auto pFormat : rFillArr )
     {
-        if 
(mxDoc->GetSpzFrameFormats()->IsAlive(static_cast<sw::SpzFrameFormat*>(pFormat)))
+        if (mxDoc->GetSpzFrameFormats()->IsAlive(pFormat))
         {
             // FlyFormat is still valid, therefore process
 
@@ -1443,7 +1443,7 @@ SwFrameFormat* SwFEShell::WizardGetFly()
 {
     // do not search the Fly via the layout. Now we can delete a frame
     // without a valid layout. ( e.g. for the wizards )
-    sw::SpzFrameFormats& rSpzArr = *mxDoc->GetSpzFrameFormats();
+    SwFrameFormats& rSpzArr = *mxDoc->GetSpzFrameFormats();
     if( !rSpzArr.empty() )
     {
         SwNode& rCursorNd = GetCursor()->GetPoint()->GetNode();
diff --git a/sw/source/core/frmedt/tblsel.cxx b/sw/source/core/frmedt/tblsel.cxx
index 48a92366509c..01022e60a7d9 100644
--- a/sw/source/core/frmedt/tblsel.cxx
+++ b/sw/source/core/frmedt/tblsel.cxx
@@ -901,7 +901,7 @@ bool IsEmptyBox( const SwTableBox& rBox, SwPaM& rPam )
     if( bRet )
     {
         // now check for paragraph bound flies
-        const sw::SpzFrameFormats& rFormats = 
*rPam.GetDoc().GetSpzFrameFormats();
+        const SwFrameFormats& rFormats = *rPam.GetDoc().GetSpzFrameFormats();
         SwNodeOffset nSttIdx = rPam.GetPoint()->GetNodeIndex(),
               nEndIdx = rBox.GetSttNd()->EndOfSectionIndex(),
               nIdx;
diff --git a/sw/source/core/inc/frmtool.hxx b/sw/source/core/inc/frmtool.hxx
index 3c8966f3147b..ca3c787e3954 100644
--- a/sw/source/core/inc/frmtool.hxx
+++ b/sw/source/core/inc/frmtool.hxx
@@ -21,7 +21,6 @@
 #define INCLUDED_SW_SOURCE_CORE_INC_FRMTOOL_HXX
 
 #include <swtypes.hxx>
-#include <frameformats.hxx>
 #include <BorderCacheOwner.hxx>
 #include "frame.hxx"
 #include "txtfrm.hxx"
@@ -57,9 +56,10 @@ constexpr tools::Long BROWSE_HEIGHT = 56700 * 10; // 10 
Meters
 #define GRFNUM_YES 1
 #define GRFNUM_REPLACE 2
 
-void AppendObjs(const sw::FrameFormats<sw::SpzFrameFormat*>* pSpz, 
SwNodeOffset nIndex, SwFrame* pFrame, SwPageFrame* pPage, SwDoc* doc);
+void AppendObjs( const SwFrameFormats *pTable, SwNodeOffset nIndex,
+                       SwFrame *pFrame, SwPageFrame *pPage, SwDoc* doc );
 
-void AppendObjsOfNode(sw::FrameFormats<sw::SpzFrameFormat*> const* pTable, 
SwNodeOffset nIndex,
+void AppendObjsOfNode(SwFrameFormats const* pTable, SwNodeOffset nIndex,
         SwFrame * pFrame, SwPageFrame * pPage, SwDoc * pDoc,
         std::vector<sw::Extent>::const_iterator const* pIter,
         std::vector<sw::Extent>::const_iterator const* pEnd,
@@ -72,7 +72,7 @@ void RemoveHiddenObjsOfNode(SwTextNode const& rNode,
 
 bool IsAnchoredObjShown(SwTextFrame const& rFrame, SwFormatAnchor const& 
rAnchor);
 
-void AppendAllObjs(const sw::FrameFormats<sw::SpzFrameFormat*>* pSpzs, const 
SwFrame* pSib);
+void AppendAllObjs(const SwFrameFormats* pTable, const SwFrame* pSib);
 
 // draw background with brush or graphics
 // The 6th parameter indicates that the method should consider background
diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx
index b81a2fab65a9..b0f07c59f62b 100644
--- a/sw/source/core/layout/atrfrm.cxx
+++ b/sw/source/core/layout/atrfrm.cxx
@@ -2835,12 +2835,15 @@ bool SwFrameFormat::IsLowerOf( const SwFrameFormat& 
rFormat ) const
     const SwFormatAnchor* pAnchor = &rFormat.GetAnchor();
     if ((RndStdIds::FLY_AT_PAGE != pAnchor->GetAnchorId()) && 
pAnchor->GetAnchorNode())
     {
+        const SwFrameFormats& rFormats = *GetDoc()->GetSpzFrameFormats();
         const SwNode* pFlyNd = pAnchor->GetAnchorNode()->FindFlyStartNode();
         while( pFlyNd )
         {
             // then we walk up using the anchor
-            for(const sw::SpzFrameFormat* pFormat: 
*GetDoc()->GetSpzFrameFormats())
+            size_t n;
+            for( n = 0; n < rFormats.size(); ++n )
             {
+                const SwFrameFormat* pFormat = rFormats[ n ];
                 const SwNodeIndex* pIdx = 
pFormat->GetContent().GetContentIdx();
                 if( pIdx && pFlyNd == &pIdx->GetNode() )
                 {
@@ -2858,6 +2861,11 @@ bool SwFrameFormat::IsLowerOf( const SwFrameFormat& 
rFormat ) const
                     break;
                 }
             }
+            if( n >= rFormats.size() )
+            {
+                OSL_ENSURE( false, "Fly section but no format found" );
+                return false;
+            }
         }
     }
     return false;
@@ -2931,8 +2939,8 @@ void SwFrameFormats::dumpAsXml(xmlTextWriterPtr pWriter, 
const char* pName) cons
 }
 
 
-SwFlyFrameFormat::SwFlyFrameFormat(SwAttrPool& rPool, const OUString 
&rFormatName, SwFrameFormat* pDerivedFrame)
-    : sw::SpzFrameFormat(rPool, rFormatName, pDerivedFrame, RES_FLYFRMFMT)
+SwFlyFrameFormat::SwFlyFrameFormat( SwAttrPool& rPool, const OUString 
&rFormatNm, SwFrameFormat *pDrvdFrame )
+    : SwFrameFormat( rPool, rFormatNm, pDrvdFrame, RES_FLYFRMFMT )
 {}
 
 SwFlyFrameFormat::~SwFlyFrameFormat()
@@ -3006,8 +3014,10 @@ void SwFlyFrameFormat::MakeFrames()
             if ( pModify == nullptr )
             {
                 const SwNode & rNd = *aAnchorAttr.GetAnchorNode();
-                for(sw::SpzFrameFormat* pFlyFormat: 
*GetDoc()->GetSpzFrameFormats())
+                SwFrameFormats& rFormats = *GetDoc()->GetSpzFrameFormats();
+                for( size_t i = 0; i < rFormats.size(); ++i )
                 {
+                    SwFrameFormat* pFlyFormat = rFormats[i];
                     if( pFlyFormat->GetContent().GetContentIdx() &&
                         rNd == 
pFlyFormat->GetContent().GetContentIdx()->GetNode() )
                     {
@@ -3670,24 +3680,25 @@ void CheckAnchoredFlyConsistency(SwDoc const& rDoc)
             assert(rAnchor.GetAnchorNode() == pNode);
         }
     }
-    if(!rDoc.GetSpzFrameFormats())
+    SwFrameFormats const*const pSpzFrameFormats(rDoc.GetSpzFrameFormats());
+    if (!pSpzFrameFormats)
         return;
 
-    for(sw::SpzFrameFormat* pSpz: *rDoc.GetSpzFrameFormats())
+    for (auto it = pSpzFrameFormats->begin(); it != pSpzFrameFormats->end(); 
++it)
     {
-        SwFormatAnchor const& rAnchor(pSpz->GetAnchor(false));
+        SwFormatAnchor const& rAnchor((**it).GetAnchor(false));
         if (RndStdIds::FLY_AT_PAGE == rAnchor.GetAnchorId())
         {
             assert(!rAnchor.GetAnchorNode()
                 // for invalid documents that lack text:anchor-page-number
                 // it may have an anchor before MakeFrames() is called
-                || (!SwIterator<SwFrame, SwFrameFormat>(*pSpz).First()));
+                || (!SwIterator<SwFrame, SwFrameFormat>(**it).First()));
         }
         else
         {
             SwNode & rNode(*rAnchor.GetAnchorNode());
             std::vector<SwFrameFormat*> const& rFlys(rNode.GetAnchoredFlys());
-            assert(std::find(rFlys.begin(), rFlys.end(), pSpz) != rFlys.end());
+            assert(std::find(rFlys.begin(), rFlys.end(), *it) != rFlys.end());
             switch (rAnchor.GetAnchorId())
             {
                 case RndStdIds::FLY_AT_FLY:
diff --git a/sw/source/core/layout/frmtool.cxx 
b/sw/source/core/layout/frmtool.cxx
index 193478da450e..057ce8adad9e 100644
--- a/sw/source/core/layout/frmtool.cxx
+++ b/sw/source/core/layout/frmtool.cxx
@@ -953,8 +953,11 @@ void SwContentNotify::ImplDestroy()
             // the page is known. Thus, this data can be corrected now.
 
             const SwPageFrame *pPage = nullptr;
-            for(sw::SpzFrameFormat* pFormat: *rDoc.GetSpzFrameFormats())
+            SwFrameFormats *pTable = rDoc.GetSpzFrameFormats();
+
+            for ( size_t i = 0; i < pTable->size(); ++i )
             {
+                SwFrameFormat *pFormat = (*pTable)[i];
                 const SwFormatAnchor &rAnch = pFormat->GetAnchor();
                 if ( RndStdIds::FLY_AT_PAGE != rAnch.GetAnchorId() ||
                      rAnch.GetAnchorNode() == nullptr )
@@ -1225,7 +1228,7 @@ void RemoveHiddenObjsOfNode(SwTextNode const& rNode,
     }
 }
 
-void AppendObjsOfNode(sw::FrameFormats<sw::SpzFrameFormat*> const*const 
pTable, SwNodeOffset const nIndex,
+void AppendObjsOfNode(SwFrameFormats const*const pTable, SwNodeOffset const 
nIndex,
     SwFrame *const pFrame, SwPageFrame *const pPage, SwDoc *const pDoc,
     std::vector<sw::Extent>::const_iterator const*const pIter,
     std::vector<sw::Extent>::const_iterator const*const pEnd,
@@ -1233,8 +1236,9 @@ void 
AppendObjsOfNode(sw::FrameFormats<sw::SpzFrameFormat*> const*const pTable,
 {
 #if OSL_DEBUG_LEVEL > 0
     std::vector<SwFrameFormat*> checkFormats;
-    for(auto pFormat: *pTable)
+    for ( size_t i = 0; i < pTable->size(); ++i )
     {
+        SwFrameFormat *pFormat = (*pTable)[i];
         const SwFormatAnchor &rAnch = pFormat->GetAnchor();
         if ( rAnch.GetAnchorNode() &&
             IsShown(nIndex, rAnch, pIter, pEnd, pFirstNode, pLastNode))
@@ -1271,7 +1275,7 @@ void 
AppendObjsOfNode(sw::FrameFormats<sw::SpzFrameFormat*> const*const pTable,
 }
 
 
-void AppendObjs(const sw::FrameFormats<sw::SpzFrameFormat*> *const pTable, 
SwNodeOffset const nIndex,
+void AppendObjs(const SwFrameFormats *const pTable, SwNodeOffset const nIndex,
         SwFrame *const pFrame, SwPageFrame *const pPage, SwDoc *const pDoc)
 {
     if (pFrame->IsTextFrame())
@@ -1374,7 +1378,7 @@ bool IsAnchoredObjShown(SwTextFrame const& rFrame, 
SwFormatAnchor const& rAnchor
     return ret;
 }
 
-void AppendAllObjs(const sw::FrameFormats<sw::SpzFrameFormat*>* pTable, const 
SwFrame* pSib)
+void AppendAllObjs(const SwFrameFormats* pTable, const SwFrame* pSib)
 {
     //Connecting of all Objects, which are described in the SpzTable with the
     //layout.
@@ -1510,7 +1514,7 @@ void InsertCnt_( SwLayoutFrame *pLay, SwDoc *pDoc,
     const bool bStartPercent = bPages && !nEndIndex;
 
     SwPageFrame *pPage = pLay->FindPageFrame();
-    sw::SpzFrameFormats* pTable = pDoc->GetSpzFrameFormats();
+    const SwFrameFormats *pTable = pDoc->GetSpzFrameFormats();
     SwFrame       *pFrame = nullptr;
     std::unique_ptr<SwActualSection> pActualSection;
     std::unique_ptr<SwLayHelper> pPageMaker;
@@ -2167,7 +2171,7 @@ void MakeFrames( SwDoc *pDoc, SwNode &rSttIdx, SwNode 
&rEndIdx )
                 // depend on value of <bAllowMove>
                 if( !isFlyCreationSuppressed )
                 {
-                    const sw::SpzFrameFormats* pTable = 
pDoc->GetSpzFrameFormats();
+                    const SwFrameFormats *pTable = pDoc->GetSpzFrameFormats();
                     if( !pTable->empty() )
                         AppendAllObjs( pTable, pUpper );
                 }
diff --git a/sw/source/core/layout/pagechg.cxx 
b/sw/source/core/layout/pagechg.cxx
index da29a0654eb9..152368d9d913 100644
--- a/sw/source/core/layout/pagechg.cxx
+++ b/sw/source/core/layout/pagechg.cxx
@@ -395,13 +395,14 @@ static void lcl_FormatLay( SwLayoutFrame *pLay )
 }
 
 /// Create Flys or register draw objects
-static void lcl_MakeObjs(const sw::FrameFormats<sw::SpzFrameFormat*>& rSpzs, 
SwPageFrame* pPage)
+static void lcl_MakeObjs( const SwFrameFormats &rTable, SwPageFrame *pPage )
 {
     // formats are in the special table of the document
-    for(size_t i = 0; i < rSpzs.size(); ++i )
+
+    for ( size_t i = 0; i < rTable.size(); ++i )
     {
-        auto pSpz = rSpzs[i];
-        const SwFormatAnchor &rAnch = pSpz->GetAnchor();
+        SwFrameFormat *pFormat = rTable[i];
+        const SwFormatAnchor &rAnch = pFormat->GetAnchor();
         if ( rAnch.GetPageNum() == pPage->GetPhyPageNum() )
         {
             if( rAnch.GetAnchorNode() )
@@ -410,19 +411,19 @@ static void lcl_MakeObjs(const 
sw::FrameFormats<sw::SpzFrameFormat*>& rSpzs, SwP
                 {
                     SwFormatAnchor aAnch( rAnch );
                     aAnch.SetAnchor( nullptr );
-                    pSpz->SetFormatAttr( aAnch );
+                    pFormat->SetFormatAttr( aAnch );
                 }
                 else
                     continue;
             }
 
             // is it a border or a SdrObject?
-            bool bSdrObj = RES_DRAWFRMFMT == pSpz->Which();
+            bool bSdrObj = RES_DRAWFRMFMT == pFormat->Which();
             SdrObject *pSdrObj = nullptr;
-            if ( bSdrObj  && nullptr == (pSdrObj = pSpz->FindSdrObject()) )
+            if ( bSdrObj  && nullptr == (pSdrObj = pFormat->FindSdrObject()) )
             {
                 OSL_FAIL( "DrawObject not found." );
-                pSpz->GetDoc()->DelFrameFormat( pSpz );
+                pFormat->GetDoc()->DelFrameFormat( pFormat );
                 --i;
                 continue;
             }
@@ -455,7 +456,7 @@ static void lcl_MakeObjs(const 
sw::FrameFormats<sw::SpzFrameFormat*>& rSpzs, SwP
             }
             else
             {
-                SwIterator<SwFlyFrame,SwFormat> aIter( *pSpz );
+                SwIterator<SwFlyFrame,SwFormat> aIter( *pFormat );
                 SwFlyFrame *pFly = aIter.First();
                 if ( pFly)
                 {
@@ -463,7 +464,7 @@ static void lcl_MakeObjs(const 
sw::FrameFormats<sw::SpzFrameFormat*>& rSpzs, SwP
                         pFly->AnchorFrame()->RemoveFly( pFly );
                 }
                 else
-                    pFly = new SwFlyLayFrame( 
static_cast<SwFlyFrameFormat*>(pSpz), pPg, pPg );
+                    pFly = new SwFlyLayFrame( 
static_cast<SwFlyFrameFormat*>(pFormat), pPg, pPg );
                 pPg->AppendFly( pFly );
                 ::RegistFlys( pPg, pFly );
             }
@@ -1557,17 +1558,17 @@ void SwRootFrame::AssertFlyPages()
     mbAssertFlyPages = false;
 
     SwDoc *pDoc = GetFormat()->GetDoc();
-    const sw::SpzFrameFormats* pSpzs = pDoc->GetSpzFrameFormats();
+    const SwFrameFormats *pTable = pDoc->GetSpzFrameFormats();
 
     // what page targets the "last" Fly?
     // note the needed pages in a set
     sal_uInt16 nMaxPg(0);
     o3tl::sorted_vector< sal_uInt16 > neededPages;
-    neededPages.reserve(pSpzs->size());
+    neededPages.reserve(pTable->size());
 
-    for(auto pSpz: *pSpzs )
+    for ( size_t i = 0; i < pTable->size(); ++i )
     {
-        const SwFormatAnchor &rAnch = pSpz->GetAnchor();
+        const SwFormatAnchor &rAnch = (*pTable)[i]->GetAnchor();
         if(!rAnch.GetAnchorNode())
         {
             const sal_uInt16 nPageNum(rAnch.GetPageNum());
diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
index 6c8fa0ea9f55..96b048b81fca 100644
--- a/sw/source/core/layout/tabfrm.cxx
+++ b/sw/source/core/layout/tabfrm.cxx
@@ -1261,8 +1261,8 @@ bool SwTabFrame::Split( const SwTwips nCutPos, bool 
bTryToSplit, bool bTableRowK
             pHeadline->InsertBefore( pFoll, nullptr );
 
             SwPageFrame *pPage = pHeadline->FindPageFrame();
-            const sw::SpzFrameFormats* pSpzs = 
GetFormat()->GetDoc()->GetSpzFrameFormats();
-            if( !pSpzs->empty() )
+            const SwFrameFormats *pTable = 
GetFormat()->GetDoc()->GetSpzFrameFormats();
+            if( !pTable->empty() )
             {
                 SwNodeOffset nIndex;
                 SwContentFrame* pFrame = pHeadline->ContainsContent();
@@ -1273,7 +1273,7 @@ bool SwTabFrame::Split( const SwTwips nCutPos, bool 
bTryToSplit, bool bTableRowK
                     nIndex = pFrame->IsTextFrame()
                         ? 
static_cast<SwTextFrame*>(pFrame)->GetTextNodeFirst()->GetIndex()
                         : 
static_cast<SwNoTextFrame*>(pFrame)->GetNode()->GetIndex();
-                    AppendObjs(pSpzs, nIndex, pFrame, pPage, 
GetFormat()->GetDoc());
+                    AppendObjs( pTable, nIndex, pFrame, pPage, 
GetFormat()->GetDoc());
                     pFrame = pFrame->GetNextContentFrame();
                     if( !pHeadline->IsAnLower( pFrame ) )
                         break;
diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx
index 233e973ed178..971918632752 100644
--- a/sw/source/core/layout/wsfrm.cxx
+++ b/sw/source/core/layout/wsfrm.cxx
@@ -4270,7 +4270,7 @@ void SwRootFrame::InvalidateAllObjPos()
 static void AddRemoveFlysForNode(
         SwTextFrame & rFrame, SwTextNode & rTextNode,
         std::set<SwNodeOffset> *const pSkipped,
-        const sw::FrameFormats<sw::SpzFrameFormat*>& rTable,
+        const SwFrameFormats & rTable,
         SwPageFrame *const pPage,
         SwTextNode const*const pNode,
         std::vector<sw::Extent>::const_iterator const& rIterFirst,
@@ -4321,7 +4321,7 @@ void AddRemoveFlysAnchoredToFrameStartingAtNode(
         && rTextNode.GetIndex() <= pMerged->pLastNode->GetIndex());
     // add visible flys in non-first node to merged frame
     // (hidden flys remain and are deleted via DelFrames())
-    sw::SpzFrameFormats& rTable(*rTextNode.GetDoc().GetSpzFrameFormats());
+    SwFrameFormats& rTable(*rTextNode.GetDoc().GetSpzFrameFormats());
     SwPageFrame *const pPage(rFrame.FindPageFrame());
     std::vector<sw::Extent>::const_iterator 
iterFirst(pMerged->extents.begin());
     std::vector<sw::Extent>::const_iterator iter(iterFirst);
diff --git a/sw/source/core/text/EnhancedPDFExportHelper.cxx 
b/sw/source/core/text/EnhancedPDFExportHelper.cxx
index 7e39716cd252..a0a1ad028f77 100644
--- a/sw/source/core/text/EnhancedPDFExportHelper.cxx
+++ b/sw/source/core/text/EnhancedPDFExportHelper.cxx
@@ -1927,8 +1927,11 @@ void SwEnhancedPDFExportHelper::EnhancedPDFExport()
 
         // HYPERLINKS (Graphics, Frames, OLEs )
 
-        for(sw::SpzFrameFormat* pFrameFormat: *pDoc->GetSpzFrameFormats())
+        SwFrameFormats* pTable = pDoc->GetSpzFrameFormats();
+        const size_t nSpzFrameFormatsCount = pTable->size();
+        for( size_t n = 0; n < nSpzFrameFormatsCount; ++n )
         {
+            SwFrameFormat* pFrameFormat = (*pTable)[n];
             const SwFormatURL* pItem;
             if ( RES_DRAWFRMFMT != pFrameFormat->Which() &&
                 GetFrameOfModify(mrSh.GetLayout(), *pFrameFormat, 
SwFrameType::Fly) &&
diff --git a/sw/source/core/text/itratr.cxx b/sw/source/core/text/itratr.cxx
index 61fb23368fbe..f055f735a94f 100644
--- a/sw/source/core/text/itratr.cxx
+++ b/sw/source/core/text/itratr.cxx
@@ -1043,11 +1043,11 @@ void SwTextNode::GetMinMaxSize( SwNodeOffset nIndex, 
sal_uLong& rMin, sal_uLong
     aNodeArgs.m_nRightDiff = 0;
     if( nIndex )
     {
-        sw::SpzFrameFormats* pSpzs = 
const_cast<sw::SpzFrameFormats*>(GetDoc().GetSpzFrameFormats());
-        if(pSpzs)
+        SwFrameFormats* pTmp = 
const_cast<SwFrameFormats*>(GetDoc().GetSpzFrameFormats());
+        if( pTmp )
         {
             aNodeArgs.m_nIndex = nIndex;
-            for(auto pFormat: *pSpzs)
+            for( SwFrameFormat *pFormat : *pTmp )
                 lcl_MinMaxNode(pFormat, aNodeArgs);
         }
     }
diff --git a/sw/source/core/undo/rolbck.cxx b/sw/source/core/undo/rolbck.cxx
index e32d9fdff00b..642e2ed77d62 100644
--- a/sw/source/core/undo/rolbck.cxx
+++ b/sw/source/core/undo/rolbck.cxx
@@ -935,7 +935,7 @@ void SwHistoryChangeFlyAnchor::SetInDoc( SwDoc* pDoc, bool )
 {
     ::sw::UndoGuard const undoGuard(pDoc->GetIDocumentUndoRedo());
 
-    if 
(!pDoc->GetSpzFrameFormats()->IsAlive(static_cast<SwFlyFrameFormat*>(&m_rFormat)))
 // Format does still exist
+    if (!pDoc->GetSpzFrameFormats()->IsAlive(&m_rFormat)) // Format does still 
exist
         return;
 
     SwFormatAnchor aTmp( m_rFormat.GetAnchor() );
diff --git a/sw/source/core/undo/undel.cxx b/sw/source/core/undo/undel.cxx
index cd1b3b1d9182..d09e1ec6d210 100644
--- a/sw/source/core/undo/undel.cxx
+++ b/sw/source/core/undo/undel.cxx
@@ -54,16 +54,17 @@
     ( == AUTO ), if the anchor frame has be moved via MoveNodes(..) and
     DelFrames(..)
 */
-static void lcl_MakeAutoFrames(const sw::FrameFormats<sw::SpzFrameFormat*>& 
rSpzs, SwNodeOffset nMovedIndex )
+static void lcl_MakeAutoFrames( const SwFrameFormats& rSpzArr, SwNodeOffset 
nMovedIndex )
 {
-    for(auto pSpz: rSpzs)
+    for( size_t n = 0; n < rSpzArr.size(); ++n )
     {
-        const SwFormatAnchor* pAnchor = &pSpz->GetAnchor();
+        SwFrameFormat * pFormat = rSpzArr[n];
+        const SwFormatAnchor* pAnchor = &pFormat->GetAnchor();
         if (pAnchor->GetAnchorId() == RndStdIds::FLY_AT_CHAR)
         {
             const SwNode* pAnchorNode = pAnchor->GetAnchorNode();
             if( pAnchorNode && nMovedIndex == pAnchorNode->GetIndex() )
-                pSpz->MakeFrames();
+                pFormat->MakeFrames();
         }
     }
 }
@@ -816,20 +817,25 @@ SwRewriter SwUndoDelete::GetRewriter() const
 }
 
 // Every object, anchored "AtContent" will be reanchored at rPos
-static void lcl_ReAnchorAtContentFlyFrames(const 
sw::FrameFormats<sw::SpzFrameFormat*>& rSpzs, const SwPosition &rPos, 
SwNodeOffset nOldIdx )
+static void lcl_ReAnchorAtContentFlyFrames( const SwFrameFormats& rSpzArr, 
const SwPosition &rPos, SwNodeOffset nOldIdx )
 {
+    if( rSpzArr.empty() )
+        return;
+
+    SwFrameFormat* pFormat;
     const SwFormatAnchor* pAnchor;
-    for(auto pSpz: rSpzs)
+    for( size_t n = 0; n < rSpzArr.size(); ++n )
     {
-        pAnchor = &pSpz->GetAnchor();
+        pFormat = rSpzArr[n];
+        pAnchor = &pFormat->GetAnchor();
         if (pAnchor->GetAnchorId() == RndStdIds::FLY_AT_PARA)
         {
-            SwNode* pAnchorNode = pAnchor->GetAnchorNode();
+            SwNode* pAnchorNode =  pAnchor->GetAnchorNode();
             if( pAnchorNode && nOldIdx == pAnchorNode->GetIndex() )
             {
                 SwFormatAnchor aAnch( *pAnchor );
                 aAnch.SetAnchor( &rPos );
-                pSpz->SetFormatAttr( aAnch );
+                pFormat->SetFormatAttr( aAnch );
             }
         }
     }
diff --git a/sw/source/core/undo/undobj.cxx b/sw/source/core/undo/undobj.cxx
index 523d065989f4..e1fa8570f054 100644
--- a/sw/source/core/undo/undobj.cxx
+++ b/sw/source/core/undo/undobj.cxx
@@ -976,10 +976,10 @@ void SwUndoSaveContent::DelContentIndex( const 
SwPosition& rMark,
     if( DelContentType::Fly & nDelContentType )
     {
         sal_uInt16 nChainInsPos = m_pHistory ? m_pHistory->Count() : 0;
-        const sw::SpzFrameFormats& rSpzArr = *rDoc.GetSpzFrameFormats();
+        const SwFrameFormats& rSpzArr = *rDoc.GetSpzFrameFormats();
         if( !rSpzArr.empty() )
         {
-            sw::SpzFrameFormat* pFormat;
+            SwFrameFormat* pFormat;
             const SwFormatAnchor* pAnchor;
             size_t n = rSpzArr.size();
             const SwPosition* pAPos;
diff --git a/sw/source/core/undo/undobj1.cxx b/sw/source/core/undo/undobj1.cxx
index 6db3d9315114..232af5876c5d 100644
--- a/sw/source/core/undo/undobj1.cxx
+++ b/sw/source/core/undo/undobj1.cxx
@@ -100,8 +100,8 @@ void SwUndoFlyBase::InsFly(::sw::UndoRedoContext & 
rContext, bool bShowSelFrame)
     SwDoc *const pDoc = & rContext.GetDoc();
 
     // add again into array
-    sw::SpzFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
-    rFlyFormats.push_back( static_cast<sw::SpzFrameFormat*>(m_pFrameFormat));
+    SwFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
+    rFlyFormats.push_back( m_pFrameFormat );
 
     // OD 26.06.2003 #108784# - insert 'master' drawing object into drawing 
page
     if ( RES_DRAWFRMFMT == m_pFrameFormat->Which() )
@@ -272,8 +272,8 @@ void SwUndoFlyBase::DelFly( SwDoc* pDoc )
     m_pFrameFormat->ResetFormatAttr( RES_ANCHOR );        // delete anchor
 
     // delete from array
-    sw::SpzFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
-    rFlyFormats.erase(static_cast<sw::SpzFrameFormat*>(m_pFrameFormat));
+    SwFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
+    rFlyFormats.erase( m_pFrameFormat );
 }
 
 SwUndoInsLayFormat::SwUndoInsLayFormat( SwFrameFormat* pFormat, SwNodeOffset 
nNodeIdx, sal_Int32 nCntIdx )
diff --git a/sw/source/core/undo/undraw.cxx b/sw/source/core/undo/undraw.cxx
index 3fd7fa8ce244..cfdae61e84ab 100644
--- a/sw/source/core/undo/undraw.cxx
+++ b/sw/source/core/undo/undraw.cxx
@@ -219,7 +219,7 @@ void SwUndoDrawGroup::UndoImpl(::sw::UndoRedoContext &)
 
     // remove from array
     SwDoc* pDoc = pFormat->GetDoc();
-    sw::SpzFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
     rFlyFormats.erase( std::find( rFlyFormats.begin(), rFlyFormats.end(), 
pFormat ));
 
     for( sal_uInt16 n = 1; n < m_nSize; ++n )
@@ -227,7 +227,7 @@ void SwUndoDrawGroup::UndoImpl(::sw::UndoRedoContext &)
         SwUndoGroupObjImpl& rSave = m_pObjArray[n];
 
         ::lcl_RestoreAnchor( rSave.pFormat, rSave.nNodeIdx );
-        rFlyFormats.push_back(static_cast<sw::SpzFrameFormat*>(rSave.pFormat));
+        rFlyFormats.push_back( rSave.pFormat );
 
         pObj = rSave.pObj;
 
@@ -264,7 +264,7 @@ void SwUndoDrawGroup::RedoImpl(::sw::UndoRedoContext &)
 
     // remove from array
     SwDoc* pDoc = m_pObjArray[0].pFormat->GetDoc();
-    sw::SpzFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
 
     // This will store the textboxes from the ex-group-shapes
     std::vector<std::pair<SdrObject*, SwFrameFormat*>> vTextBoxes;
@@ -297,7 +297,7 @@ void SwUndoDrawGroup::RedoImpl(::sw::UndoRedoContext &)
 
     // re-insert group object
     ::lcl_RestoreAnchor( m_pObjArray[0].pFormat, m_pObjArray[0].nNodeIdx );
-    
rFlyFormats.push_back(static_cast<sw::SpzFrameFormat*>(m_pObjArray[0].pFormat 
));
+    rFlyFormats.push_back( m_pObjArray[0].pFormat );
 
     SwDrawContact *pContact = new SwDrawContact( m_pObjArray[0].pFormat, 
m_pObjArray[0].pObj );
     // #i26791# - correction: connect object to layout
@@ -336,7 +336,7 @@ void SwUndoDrawGroup::AddObj( sal_uInt16 nPos, 
SwDrawFrameFormat* pFormat, SdrOb
     pFormat->RemoveAllUnos();
 
     // remove from array
-    sw::SpzFrameFormats& rFlyFormats = 
*pFormat->GetDoc()->GetSpzFrameFormats();
+    SwFrameFormats& rFlyFormats = *pFormat->GetDoc()->GetSpzFrameFormats();
     rFlyFormats.erase( std::find( rFlyFormats.begin(), rFlyFormats.end(), 
pFormat ));
 }
 
@@ -367,7 +367,7 @@ SwUndoDrawUnGroup::SwUndoDrawUnGroup( SdrObjGroup* pObj, 
const SwDoc& rDoc )
     pFormat->RemoveAllUnos();
 
     // remove from array
-    sw::SpzFrameFormats& rFlyFormats = 
*pFormat->GetDoc()->GetSpzFrameFormats();
+    SwFrameFormats& rFlyFormats = *pFormat->GetDoc()->GetSpzFrameFormats();
     rFlyFormats.erase( std::find( rFlyFormats.begin(), rFlyFormats.end(), 
pFormat ));
 }
 
@@ -388,7 +388,7 @@ void SwUndoDrawUnGroup::UndoImpl(::sw::UndoRedoContext & 
rContext)
     m_bDeleteFormat = true;
 
     SwDoc *const pDoc = & rContext.GetDoc();
-    sw::SpzFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
 
     // This will store the textboxes what were owned by this group
     std::vector<std::pair<SdrObject*, SwFrameFormat*>> vTextBoxes;
@@ -424,7 +424,7 @@ void SwUndoDrawUnGroup::UndoImpl(::sw::UndoRedoContext & 
rContext)
 
     // re-insert group object
     ::lcl_RestoreAnchor( m_pObjArray[0].pFormat, m_pObjArray[0].nNodeIdx );
-    
rFlyFormats.push_back(static_cast<sw::SpzFrameFormat*>(m_pObjArray[0].pFormat 
));
+    rFlyFormats.push_back( m_pObjArray[0].pFormat );
 
     SwDrawContact *pContact = new SwDrawContact( m_pObjArray[0].pFormat, 
m_pObjArray[0].pObj );
     pContact->ConnectToLayout();
@@ -481,7 +481,7 @@ void SwUndoDrawUnGroup::RedoImpl(::sw::UndoRedoContext &)
 
     // remove from array
     SwDoc* pDoc = pFormat->GetDoc();
-    sw::SpzFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
     rFlyFormats.erase( std::find( rFlyFormats.begin(), rFlyFormats.end(), 
pFormat ));
 
     for( sal_uInt16 n = 1; n < m_nSize; ++n )
@@ -489,7 +489,7 @@ void SwUndoDrawUnGroup::RedoImpl(::sw::UndoRedoContext &)
         SwUndoGroupObjImpl& rSave = m_pObjArray[n];
 
         ::lcl_RestoreAnchor( rSave.pFormat, rSave.nNodeIdx );
-        rFlyFormats.push_back(static_cast<sw::SpzFrameFormat*>(rSave.pFormat));
+        rFlyFormats.push_back( rSave.pFormat );
 
         SwDrawFrameFormat* pDrawFrameFormat = rSave.pFormat;
 
@@ -588,12 +588,12 @@ SwUndoDrawDelete::~SwUndoDrawDelete()
 void SwUndoDrawDelete::UndoImpl(::sw::UndoRedoContext & rContext)
 {
     m_bDeleteFormat = false;
-    sw::SpzFrameFormats& rFlyFormats = *rContext.GetDoc().GetSpzFrameFormats();
+    SwFrameFormats & rFlyFormats = *rContext.GetDoc().GetSpzFrameFormats();
     for( size_t n = 0; n < m_pMarkList->GetMarkCount(); ++n )
     {
         SwUndoGroupObjImpl& rSave = m_pObjArray[n];
         ::lcl_RestoreAnchor( rSave.pFormat, rSave.nNodeIdx );
-        rFlyFormats.push_back(static_cast<sw::SpzFrameFormat*>(rSave.pFormat));
+        rFlyFormats.push_back( rSave.pFormat );
         SdrObject *pObj = rSave.pObj;
         SwDrawContact *pContact = new SwDrawContact( rSave.pFormat, pObj );
         pContact->Changed_( *pObj, SdrUserCallType::Inserted, nullptr );
@@ -619,7 +619,7 @@ void SwUndoDrawDelete::UndoImpl(::sw::UndoRedoContext & 
rContext)
 void SwUndoDrawDelete::RedoImpl(::sw::UndoRedoContext & rContext)
 {
     m_bDeleteFormat = true;
-    sw::SpzFrameFormats& rFlyFormats = *rContext.GetDoc().GetSpzFrameFormats();
+    SwFrameFormats & rFlyFormats = *rContext.GetDoc().GetSpzFrameFormats();
     for( size_t n = 0; n < m_pMarkList->GetMarkCount(); ++n )
     {
         SwUndoGroupObjImpl& rSave = m_pObjArray[n];
@@ -650,7 +650,7 @@ void SwUndoDrawDelete::AddObj( SwDrawFrameFormat* pFormat,
 
     // remove from array
     SwDoc* pDoc = pFormat->GetDoc();
-    sw::SpzFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
+    SwFrameFormats& rFlyFormats = *pDoc->GetSpzFrameFormats();
     rFlyFormats.erase( std::find( rFlyFormats.begin(), rFlyFormats.end(), 
pFormat ));
 
     m_pMarkList->InsertEntry( rMark );
diff --git a/sw/source/core/undo/untbl.cxx b/sw/source/core/undo/untbl.cxx
index 8c351559db69..fffd8e8b4e51 100644
--- a/sw/source/core/undo/untbl.cxx
+++ b/sw/source/core/undo/untbl.cxx
@@ -434,8 +434,10 @@ SwUndoTableToText::SwUndoTableToText( const SwTable& 
rTable, sal_Unicode cCh )
     const SwTableNode* pTableNd = rTable.GetTableNode();
     SwNodeOffset nTableStt = pTableNd->GetIndex(), nTableEnd = 
pTableNd->EndOfSectionIndex();
 
-    for(sw::SpzFrameFormat* pFormat: *pTableNd->GetDoc().GetSpzFrameFormats())
+    const SwFrameFormats& rFrameFormatTable = 
*pTableNd->GetDoc().GetSpzFrameFormats();
+    for( size_t n = 0; n < rFrameFormatTable.size(); ++n )
     {
+        SwFrameFormat* pFormat = rFrameFormatTable[ n ];
         SwFormatAnchor const*const pAnchor = &pFormat->GetAnchor();
         SwNode const*const pAnchorNode = pAnchor->GetAnchorNode();
         if (pAnchorNode &&
diff --git a/sw/source/core/unocore/unocoll.cxx 
b/sw/source/core/unocore/unocoll.cxx
index 65e70846470f..627ab4bf870c 100644
--- a/sw/source/core/unocore/unocoll.cxx
+++ b/sw/source/core/unocore/unocoll.cxx
@@ -1079,9 +1079,17 @@ template<FlyCntType T>
 SwXFrameEnumeration<T>::SwXFrameEnumeration(const SwDoc& rDoc)
 {
     SolarMutexGuard aGuard;
-    for(sw::SpzFrameFormat* pFormat: *rDoc.GetSpzFrameFormats())
+    const SwFrameFormats* const pFormats = rDoc.GetSpzFrameFormats();
+    if (pFormats->empty())
+        return;
+    // #i104937#
+    const size_t nSize = pFormats->size();
+    // #i104937#
+    SwFrameFormat* pFormat( nullptr );
+    for( size_t i = 0; i < nSize; ++i )
     {
         // #i104937#
+        pFormat = (*pFormats)[i];
         if(pFormat->Which() != RES_FLYFRMFMT || 
SwTextBoxHelper::isTextBox(pFormat, RES_FLYFRMFMT))
             continue;
         const SwNodeIndex* pIdx =  pFormat->GetContent().GetContentIdx();
diff --git a/sw/source/core/unocore/unoobj2.cxx 
b/sw/source/core/unocore/unoobj2.cxx
index c07c78237e92..c73c2c34a458 100644
--- a/sw/source/core/unocore/unoobj2.cxx
+++ b/sw/source/core/unocore/unoobj2.cxx
@@ -155,9 +155,12 @@ void CollectFrameAtNode( const SwNode& rNd,
     }
     else
     {
-        for(sw::SpzFrameFormat* pSpz: *rDoc.GetSpzFrameFormats())
+        const SwFrameFormats& rFormats = *rDoc.GetSpzFrameFormats();
+        const size_t nSize = rFormats.size();
+        for ( size_t i = 0; i < nSize; i++)
         {
-            const SwFormatAnchor& rAnchor = pSpz->GetAnchor();
+            const SwFrameFormat* pFormat = rFormats[ i ];
+            const SwFormatAnchor& rAnchor = pFormat->GetAnchor();
             const SwNode* pAnchorNode;
             if( rAnchor.GetAnchorId() == nChkType &&
                 nullptr != (pAnchorNode = rAnchor.GetAnchorNode()) &&
@@ -169,7 +172,7 @@ void CollectFrameAtNode( const SwNode& rNd,
                 const sal_Int32 nIndex = rAnchor.GetAnchorContentOffset();
                 sal_uInt32 nOrder = rAnchor.GetOrder();
 
-                rFrames.emplace_back(nIndex, nOrder, 
std::make_unique<sw::FrameClient>(pSpz));
+                rFrames.emplace_back(nIndex, nOrder, 
std::make_unique<sw::FrameClient>(const_cast<SwFrameFormat*>(pFormat)));
             }
         }
         std::sort(rFrames.begin(), rFrames.end(), FrameClientSortListLess());
diff --git a/sw/source/core/view/viewsh.cxx b/sw/source/core/view/viewsh.cxx
index a6197e994c51..18d0769cd3b4 100644
--- a/sw/source/core/view/viewsh.cxx
+++ b/sw/source/core/view/viewsh.cxx
@@ -728,8 +728,15 @@ void SwViewShell::UpdateFields(bool bCloseDB)
 void SwViewShell::UpdateOleObjectPreviews()
 {
     SwDoc* pDoc = GetDoc();
-    for(sw::SpzFrameFormat* pFormat: *pDoc->GetSpzFrameFormats())
+    const SwFrameFormats* const pFormats = pDoc->GetSpzFrameFormats();
+    if (pFormats->empty())
     {
+        return;
+    }
+
+    for (size_t i = 0; i < pFormats->size(); ++i)
+    {
+        SwFrameFormat* pFormat = (*pFormats)[i];
         if (pFormat->Which() != RES_FLYFRMFMT)
         {
             continue;
diff --git a/sw/source/filter/html/htmlforw.cxx 
b/sw/source/filter/html/htmlforw.cxx
index 741ceff97c33..67c213c4d331 100644
--- a/sw/source/filter/html/htmlforw.cxx
+++ b/sw/source/filter/html/htmlforw.cxx
@@ -1318,18 +1318,20 @@ void SwHTMLWriter::GetControls()
     }
 
     // and now the ones in a character-bound frame
-    for(sw::SpzFrameFormat* pSpz: *m_pDoc->GetSpzFrameFormats())
+    const SwFrameFormats* pSpzFrameFormats = m_pDoc->GetSpzFrameFormats();
+    for( size_t i=0; i<pSpzFrameFormats->size(); i++ )
     {
-        if( RES_DRAWFRMFMT != pSpz->Which() )
+        const SwFrameFormat *pFrameFormat = (*pSpzFrameFormats)[i];
+        if( RES_DRAWFRMFMT != pFrameFormat->Which() )
             continue;
 
-        const SwFormatAnchor& rAnchor = pSpz->GetAnchor();
+        const SwFormatAnchor& rAnchor = pFrameFormat->GetAnchor();
         const SwNode *pAnchorNode = rAnchor.GetAnchorNode();
         if ((RndStdIds::FLY_AS_CHAR != rAnchor.GetAnchorId()) || !pAnchorNode)
             continue;
 
         const SdrObject *pSdrObj =
-            
SwHTMLWriter::GetHTMLControl(*static_cast<SwDrawFrameFormat*>(pSpz) );
+            SwHTMLWriter::GetHTMLControl( *static_cast<const 
SwDrawFrameFormat*>(pFrameFormat) );
         if( !pSdrObj )
             continue;
 
diff --git a/sw/source/filter/html/htmlgrin.cxx 
b/sw/source/filter/html/htmlgrin.cxx
index f8f6c8ba31a8..daf90faff773 100644
--- a/sw/source/filter/html/htmlgrin.cxx
+++ b/sw/source/filter/html/htmlgrin.cxx
@@ -1456,10 +1456,11 @@ void SwHTMLParser::StripTrailingPara()
         if( pCNd && pCNd->StartOfSectionIndex() + 2 <
             pCNd->EndOfSectionIndex() && CanRemoveNode(nNodeIdx))
         {
+            const SwFrameFormats& rFrameFormatTable = 
*m_xDoc->GetSpzFrameFormats();
 
-            for(sw::SpzFrameFormat* pSpz: *m_xDoc->GetSpzFrameFormats())
+            for( auto pFormat : rFrameFormatTable )
             {
-                SwFormatAnchor const*const pAnchor = &pSpz->GetAnchor();
+                SwFormatAnchor const*const pAnchor = &pFormat->GetAnchor();
                 SwNode const*const pAnchorNode = pAnchor->GetAnchorNode();
                 if (pAnchorNode &&
                     ((RndStdIds::FLY_AT_PARA == pAnchor->GetAnchorId()) ||
diff --git a/sw/source/filter/html/swhtml.cxx b/sw/source/filter/html/swhtml.cxx
index 49e3e9a8abce..67502f1a278b 100644
--- a/sw/source/filter/html/swhtml.cxx
+++ b/sw/source/filter/html/swhtml.cxx
@@ -4551,10 +4551,12 @@ bool SwHTMLParser::HasCurrentParaFlys( bool 
bNoSurroundOnly,
 {
     SwNode& rNode = m_pPam->GetPoint()->GetNode();
 
+    const SwFrameFormats& rFrameFormatTable = *m_xDoc->GetSpzFrameFormats();
 
     bool bFound = false;
-    for(sw::SpzFrameFormat* pFormat: *m_xDoc->GetSpzFrameFormats())
+    for ( size_t i=0; i<rFrameFormatTable.size(); i++ )
     {
+        const SwFrameFormat *const pFormat = rFrameFormatTable[i];

... etc. - the rest is truncated

Reply via email to