connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx   |    4 
 connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx   |    3 
 connectivity/source/drivers/evoab2/NResultSet.cxx                |    3 
 connectivity/source/drivers/evoab2/NStatement.cxx                |    2 
 connectivity/source/drivers/file/FPreparedStatement.cxx          |    2 
 connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx |    4 
 connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx          |    4 
 connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx  |    3 
 cppuhelper/source/gcc3.map                                       |    7 +
 cppuhelper/source/weak.cxx                                       |   46 
++++++++++
 dbaccess/source/core/api/RowSet.cxx                              |    2 
 dbaccess/source/core/api/statement.cxx                           |    2 
 forms/source/component/FormattedField.cxx                        |    2 
 framework/source/fwe/helper/titlehelper.cxx                      |    2 
 include/cppuhelper/weakref.hxx                                   |   34 +++++++
 include/unotools/weakref.hxx                                     |   13 ++
 sw/inc/fldbas.hxx                                                |    2 
 sw/inc/fmtfld.hxx                                                |    2 
 sw/inc/fmtftn.hxx                                                |    2 
 sw/inc/fmtrfmrk.hxx                                              |    5 -
 sw/inc/ndtxt.hxx                                                 |    2 
 sw/inc/section.hxx                                               |    4 
 sw/inc/tox.hxx                                                   |    4 
 sw/source/core/inc/bookmark.hxx                                  |    3 
 sw/source/core/txtnode/atrfld.cxx                                |    2 
 sw/source/core/undo/undobj1.cxx                                  |    1 
 toolkit/source/controls/unocontrol.cxx                           |    2 
 27 files changed, 123 insertions(+), 39 deletions(-)

New commits:
commit 27352b81638f2f1e792ab48ec532eaacf6f61718
Author:     Noel Grandin <[email protected]>
AuthorDate: Mon Feb 21 16:00:52 2022 +0200
Commit:     Noel Grandin <[email protected]>
CommitDate: Tue Feb 22 12:27:55 2022 +0100

    Add XWeak constructor and operator= to uno::WeakReference
    
    which is faster since we can skip the UNO_QUERY.
    
    Change-Id: Id95ad9f3568213e974bd13659d92d4ea94dbfbd6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/130282
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <[email protected]>

diff --git a/connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx 
b/connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx
index 6b9ea06247f5..d88d9b932f4c 100644
--- a/connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx
+++ b/connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx
@@ -44,7 +44,6 @@ using namespace ::com::sun::star::lang;
 ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet()
     :ODatabaseMetaDataResultSet_BASE(m_aMutex)
     
,::comphelper::OPropertyContainer(ODatabaseMetaDataResultSet_BASE::rBHelper)
-    ,m_aStatement(nullptr)
     ,m_nColPos(0)
     ,m_bBOF(true)
     ,m_bEOF(true)
@@ -56,7 +55,6 @@ ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet()
 ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet( MetaDataResultSetType 
_eType )
     :ODatabaseMetaDataResultSet_BASE(m_aMutex)
     
,::comphelper::OPropertyContainer(ODatabaseMetaDataResultSet_BASE::rBHelper)
-    ,m_aStatement(nullptr)
     ,m_nColPos(0)
     ,m_bBOF(true)
     ,m_bEOF(true)
@@ -111,7 +109,7 @@ void ODatabaseMetaDataResultSet::disposing()
     OPropertySetHelper::disposing();
 
     ::osl::MutexGuard aGuard(m_aMutex);
-    m_aStatement    = nullptr;
+    m_aStatement.clear();
     m_xMetaData.clear();
     m_aRowsIter = m_aRows.end();
     m_aRows.clear();
diff --git a/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx 
b/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx
index 5816f6456a32..bb5bda634cfc 100644
--- a/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx
+++ b/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx
@@ -53,7 +53,6 @@ 
ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet(ADORecordset* _pRecordSet
     :ODatabaseMetaDataResultSet_BASE(m_aMutex)
     ,OPropertySetHelper(ODatabaseMetaDataResultSet_BASE::rBHelper)
     ,m_pRecordSet(_pRecordSet)
-    ,m_aStatement(nullptr)
     ,m_nRowPos(0)
     ,m_bWasNull(false)
     ,m_bEOF(false)
@@ -88,7 +87,7 @@ void ODatabaseMetaDataResultSet::disposing()
     ::osl::MutexGuard aGuard(m_aMutex);
     if(m_pRecordSet)
         m_pRecordSet->Close();
-    m_aStatement    = nullptr;
+    m_aStatement.clear();
     m_xMetaData.clear();
 }
 
diff --git a/connectivity/source/drivers/evoab2/NResultSet.cxx 
b/connectivity/source/drivers/evoab2/NResultSet.cxx
index e6a43dab7687..53b50a5c3c1a 100644
--- a/connectivity/source/drivers/evoab2/NResultSet.cxx
+++ b/connectivity/source/drivers/evoab2/NResultSet.cxx
@@ -914,8 +914,7 @@ Reference< XInterface > SAL_CALL 
OEvoabResultSet::getStatement(  )
 {
     ::osl::MutexGuard aGuard( m_aMutex );
     checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
-    css::uno::WeakReferenceHelper      
aStatement(static_cast<OWeakObject*>(m_pStatement));
-    return aStatement.get();
+    return static_cast<cppu::OWeakObject*>(m_pStatement);
 }
 
 
diff --git a/connectivity/source/drivers/evoab2/NStatement.cxx 
b/connectivity/source/drivers/evoab2/NStatement.cxx
index 1f3e21a2ef90..8e556800871b 100644
--- a/connectivity/source/drivers/evoab2/NStatement.cxx
+++ b/connectivity/source/drivers/evoab2/NStatement.cxx
@@ -614,7 +614,7 @@ Reference< XResultSet > 
OCommonStatement::impl_executeQuery_throw( const QueryDa
     pResult->construct( _rQueryData );
 
     // done
-    m_xResultSet = pResult;
+    m_xResultSet = Reference<XWeak>(pResult);
     return pResult;
 }
 
diff --git a/connectivity/source/drivers/file/FPreparedStatement.cxx 
b/connectivity/source/drivers/file/FPreparedStatement.cxx
index 79c69b3ee62e..2ae516800b06 100644
--- a/connectivity/source/drivers/file/FPreparedStatement.cxx
+++ b/connectivity/source/drivers/file/FPreparedStatement.cxx
@@ -100,7 +100,7 @@ rtl::Reference<OResultSet> 
OPreparedStatement::makeResultSet()
     closeResultSet();
 
     rtl::Reference<OResultSet> xResultSet(createResultSet());
-    m_xResultSet = xResultSet;
+    m_xResultSet = uno::Reference<uno::XWeak>(xResultSet);
     initializeResultSet(xResultSet.get());
     initResultSet(xResultSet.get());
     return xResultSet;
diff --git a/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx 
b/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx
index 24208ae244af..90d0e3d8746a 100644
--- a/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx
+++ b/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx
@@ -183,7 +183,7 @@ OPreparedResultSet::OPreparedResultSet(OConnection& rConn, 
OPreparedStatement* p
     : OPreparedResultSet_BASE(m_aMutex)
     , OPropertySetHelper(OPreparedResultSet_BASE::rBHelper)
     , m_rConnection(rConn)
-    , m_aStatement(static_cast<OWeakObject*>(pStmt))
+    , 
m_aStatement(css::uno::Reference<css::uno::XWeak>(static_cast<OWeakObject*>(pStmt)))
     , m_pStmt(pMyStmt)
     , m_encoding(rConn.getConnectionEncoding())
     , m_nColumnCount(mysql_stmt_field_count(pMyStmt))
@@ -201,7 +201,7 @@ void OPreparedResultSet::disposing()
 
     MutexGuard aGuard(m_aMutex);
 
-    m_aStatement = nullptr;
+    m_aStatement.clear();
     m_xMetaData = nullptr;
 }
 
diff --git a/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx 
b/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx
index 348283b56505..182e74b7fcb9 100644
--- a/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx
+++ b/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx
@@ -107,7 +107,7 @@ OResultSet::OResultSet(OConnection& rConn, 
OCommonStatement* pStmt, MYSQL_RES* p
     : OResultSet_BASE(m_aMutex)
     , OPropertySetHelper(OResultSet_BASE::rBHelper)
     , m_pMysql(rConn.getMysqlConnection())
-    , m_aStatement(static_cast<OWeakObject*>(pStmt))
+    , 
m_aStatement(css::uno::Reference<css::uno::XWeak>(static_cast<OWeakObject*>(pStmt)))
     , m_pResult(pResult)
     , m_encoding(_encoding)
 {
@@ -181,7 +181,7 @@ void OResultSet::disposing()
         mysql_free_result(m_pResult);
         m_pResult = nullptr;
     }
-    m_aStatement = nullptr;
+    m_aStatement.clear();
     m_xMetaData = nullptr;
 }
 
diff --git a/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx 
b/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx
index 39a9e39896dc..5fbe8bf8f460 100644
--- a/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx
+++ b/connectivity/source/drivers/odbc/ODatabaseMetaDataResultSet.cxx
@@ -47,7 +47,6 @@ 
ODatabaseMetaDataResultSet::ODatabaseMetaDataResultSet(OConnection* _pConnection
     ,OPropertySetHelper(ODatabaseMetaDataResultSet_BASE::rBHelper)
 
     ,m_aStatementHandle(_pConnection->createStatementHandle())
-    ,m_aStatement(nullptr)
     ,m_pConnection(_pConnection)
     ,m_nTextEncoding(_pConnection->getTextEncoding())
     ,m_nRowPos(-1)
@@ -84,7 +83,7 @@ void ODatabaseMetaDataResultSet::disposing()
 
     m_pConnection->freeStatementHandle(m_aStatementHandle);
 
-    m_aStatement    = nullptr;
+    m_aStatement.clear();
     m_xMetaData.clear();
     m_pConnection.clear();
 }
diff --git a/cppuhelper/source/gcc3.map b/cppuhelper/source/gcc3.map
index d5af50655c1a..07099853afb7 100644
--- a/cppuhelper/source/gcc3.map
+++ b/cppuhelper/source/gcc3.map
@@ -435,6 +435,13 @@ global:
     _ZN3com3sun4star3uno19WeakReferenceHelperaSEOS3_; # 
com::sun::star::uno::WeakReferenceHelper::operator=(com::sun::star::uno::WeakReferenceHelper&&)
 } LIBO_UDK_3.9;
 
+LIBO_UDK_7.5 { # LibO 7.5
+global:
+    
_ZN3com3sun4star3uno19WeakReferenceHelperaSERKNS2_9ReferenceINS2_5XWeakEEE; # 
com::sun::star::uno::WeakReferenceHelper::operator=(com::sun::star::uno::Reference<com::sun::star::uno::XWeak>
 const&)
+    
_ZN3com3sun4star3uno19WeakReferenceHelperC1ERKNS2_9ReferenceINS2_5XWeakEEE; # 
com::sun::star::uno::WeakReferenceHelper::WeakReferenceHelper(com::sun::star::uno::Reference<com::sun::star::uno::XWeak>
 const&)
+    
_ZN3com3sun4star3uno19WeakReferenceHelperC2ERKNS2_9ReferenceINS2_5XWeakEEE; # 
com::sun::star::uno::WeakReferenceHelper::WeakReferenceHelper(com::sun::star::uno::Reference<com::sun::star::uno::XWeak>
 const&)
+} LIBO_UDK_5.3;
+
 # Unique libstdc++ symbols:
 GLIBCXX_3.4 {
     global:
diff --git a/cppuhelper/source/weak.cxx b/cppuhelper/source/weak.cxx
index f45f433e9ce2..65c9e7f81912 100644
--- a/cppuhelper/source/weak.cxx
+++ b/cppuhelper/source/weak.cxx
@@ -331,6 +331,7 @@ class OWeakRefListener final : public XReference
 {
 public:
     explicit OWeakRefListener(const Reference< XInterface >& xInt);
+    explicit OWeakRefListener(const Reference< XWeak >& xInt);
     virtual ~OWeakRefListener();
 
     // noncopyable
@@ -372,6 +373,25 @@ OWeakRefListener::OWeakRefListener(const Reference< 
XInterface >& xInt)
     osl_atomic_decrement( &m_aRefCount );
 }
 
+OWeakRefListener::OWeakRefListener(const Reference< XWeak >& xWeak)
+    : m_aRefCount( 1 )
+{
+    try
+    {
+    if (xWeak.is())
+    {
+        m_XWeakConnectionPoint = xWeak->queryAdapter();
+
+        if (m_XWeakConnectionPoint.is())
+        {
+            
m_XWeakConnectionPoint->addReference(static_cast<XReference*>(this));
+        }
+    }
+    }
+    catch (RuntimeException &) { OSL_ASSERT( false ); } // assert here, but no 
unexpected()
+    osl_atomic_decrement( &m_aRefCount );
+}
+
 OWeakRefListener::~OWeakRefListener()
 {
     try
@@ -434,6 +454,16 @@ WeakReferenceHelper::WeakReferenceHelper(const Reference< 
XInterface >& xInt)
     }
 }
 
+WeakReferenceHelper::WeakReferenceHelper(const Reference< XWeak >& xWeak)
+    : m_pImpl( nullptr )
+{
+    if (xWeak.is())
+    {
+        m_pImpl = new OWeakRefListener(xWeak);
+        m_pImpl->acquire();
+    }
+}
+
 WeakReferenceHelper::WeakReferenceHelper(const WeakReferenceHelper& rWeakRef)
     : m_pImpl( nullptr )
 {
@@ -493,6 +523,22 @@ WeakReferenceHelper::operator= (const Reference< 
XInterface > & xInt)
     return *this;
 }
 
+WeakReferenceHelper &
+WeakReferenceHelper::operator= (const Reference< XWeak > & xWeak)
+{
+    try
+    {
+        clear();
+        if (xWeak.is())
+        {
+            m_pImpl = new OWeakRefListener(xWeak);
+            m_pImpl->acquire();
+        }
+    }
+    catch (RuntimeException &) { OSL_ASSERT( false ); } // assert here, but no 
unexpected()
+    return *this;
+}
+
 WeakReferenceHelper::~WeakReferenceHelper()
 {
     clear();
diff --git a/dbaccess/source/core/api/RowSet.cxx 
b/dbaccess/source/core/api/RowSet.cxx
index d22717c263b0..9de8f00537c3 100644
--- a/dbaccess/source/core/api/RowSet.cxx
+++ b/dbaccess/source/core/api/RowSet.cxx
@@ -2071,7 +2071,7 @@ Reference< XResultSet > SAL_CALL 
ORowSet::createResultSet(  )
     if(m_xStatement.is())
     {
         rtl::Reference<ORowSetClone> pClone = new ORowSetClone( m_aContext, 
*this, m_pMutex );
-        m_aClones.emplace_back(static_cast<cppu::OWeakObject*>(pClone.get()));
+        m_aClones.emplace_back(css::uno::Reference< css::uno::XWeak >(pClone));
         return pClone;
     }
     return Reference< XResultSet >();
diff --git a/dbaccess/source/core/api/statement.cxx 
b/dbaccess/source/core/api/statement.cxx
index 3a466cff7d5f..3a67cbaebc7a 100644
--- a/dbaccess/source/core/api/statement.cxx
+++ b/dbaccess/source/core/api/statement.cxx
@@ -124,7 +124,7 @@ void OStatementBase::disposeResultSet()
     Reference< XComponent > xComp(m_aResultSet.get(), UNO_QUERY);
     if (xComp.is())
         xComp->dispose();
-    m_aResultSet = nullptr;
+    m_aResultSet.clear();
 }
 
 // OComponentHelper
diff --git a/forms/source/component/FormattedField.cxx 
b/forms/source/component/FormattedField.cxx
index 3ede69a641a0..80e425ad6840 100644
--- a/forms/source/component/FormattedField.cxx
+++ b/forms/source/component/FormattedField.cxx
@@ -121,7 +121,7 @@ Reference< XNumberFormatsSupplier > 
StandardFormatsSupplier::get( const Referenc
             // somebody used the small time frame where the mutex was not 
locked to create and set
             // the supplier
             return xSupplier;
-        s_xDefaultFormatsSupplier = pSupplier;
+        s_xDefaultFormatsSupplier = 
css::uno::Reference<css::uno::XWeak>(pSupplier);
     }
     return pSupplier;
 }
diff --git a/framework/source/fwe/helper/titlehelper.cxx 
b/framework/source/fwe/helper/titlehelper.cxx
index 740d98a753ec..2f63b47bd62c 100644
--- a/framework/source/fwe/helper/titlehelper.cxx
+++ b/framework/source/fwe/helper/titlehelper.cxx
@@ -243,7 +243,7 @@ void SAL_CALL TitleHelper::disposing(const 
css::lang::EventObject& aEvent)
     {
         osl::MutexGuard aLock(m_aMutex);
 
-        m_xOwner        = nullptr;
+        m_xOwner.clear();
         m_sTitle        = OUString ();
         m_nLeasedNumber = css::frame::UntitledNumbersConst::INVALID_NUMBER;
     }
diff --git a/include/cppuhelper/weakref.hxx b/include/cppuhelper/weakref.hxx
index 9b41df598340..a5858b2e8805 100644
--- a/include/cppuhelper/weakref.hxx
+++ b/include/cppuhelper/weakref.hxx
@@ -42,6 +42,7 @@ namespace uno
 {
 
 class OWeakRefListener;
+class XWeak;
 
 /** The WeakReferenceHelper holds a weak reference to an object.
 
@@ -79,6 +80,16 @@ public:
     */
     WeakReferenceHelper( const css::uno::Reference< css::uno::XInterface > & 
xInt );
 
+#if defined LIBO_INTERNAL_ONLY
+    /** Initialize this reference with the hard interface reference xWeak. This
+         is faster than the XInterface constructor because we can skip doing an
+         UNO_QUERY.
+
+        @param xWeak another hard interface reference
+    */
+    WeakReferenceHelper( const css::uno::Reference< css::uno::XWeak > & xWeak 
);
+#endif
+
     /** Releases this reference.
     */
     ~WeakReferenceHelper();
@@ -102,6 +113,17 @@ public:
     WeakReferenceHelper & SAL_CALL operator = (
             const css::uno::Reference< css::uno::XInterface > & xInt );
 
+#if defined LIBO_INTERNAL_ONLY
+    /** Releases this reference and takes over hard reference xWeak. This
+         is faster than the XInterface constructor because we can skip doing an
+         UNO_QUERY.
+
+        @param xWeak another hard reference
+    */
+    WeakReferenceHelper & operator = (
+            const css::uno::Reference< css::uno::XWeak > & xWeak );
+#endif
+
     /** Returns true if both weak refs reference to the same object.
 
         @param rObj another weak ref
@@ -176,6 +198,18 @@ public:
             const css::uno::Reference< interface_type > & xInt )
         { WeakReferenceHelper::operator=(xInt); return *this; }
 
+#if defined LIBO_INTERNAL_ONLY
+    /** Releases this reference and takes over hard reference xWeak. This
+         is faster than the XInterface constructor because we can skip doing an
+         UNO_QUERY.
+
+        @param xWeak another hard reference
+    */
+    WeakReference & operator = (
+            const css::uno::Reference< css::uno::XWeak > & xWeak )
+        { WeakReferenceHelper::operator=(xWeak); return *this; }
+#endif
+
     /**  Gets a hard reference to the object.
 
          @return hard reference or null, if the weakly referenced interface 
has gone
diff --git a/include/unotools/weakref.hxx b/include/unotools/weakref.hxx
index 189df22d5359..ca5682416033 100644
--- a/include/unotools/weakref.hxx
+++ b/include/unotools/weakref.hxx
@@ -77,14 +77,22 @@ public:
     {
     }
 
-    /** Copy ctor.  Initialize this reference with a hard reference.
+        /** Copy ctor.  Initialize this reference with a hard reference.
 
         @param rRef another hard ref
     */
+#if defined LIBO_INTERNAL_ONLY
+    WeakReference(interface_type* pRef)
+        : WeakReferenceHelper(
+              
css::uno::Reference<css::uno::XWeak>(static_cast<cppu::OWeakObject*>(pRef)))
+    {
+    }
+#else
     WeakReference(interface_type* pRef)
         : WeakReferenceHelper(static_cast<cppu::OWeakObject*>(pRef))
     {
     }
+#endif
 
     /** Releases this reference and takes over hard reference xInt.
         If the implementation behind xInt does not support XWeak
@@ -106,7 +114,8 @@ public:
 
     WeakReference& operator=(interface_type* pInt)
     {
-        
WeakReferenceHelper::operator=(static_cast<::cppu::OWeakObject*>(pInt));
+        WeakReferenceHelper::operator=(
+            
css::uno::Reference<css::uno::XWeak>(static_cast<::cppu::OWeakObject*>(pInt)));
         return *this;
     }
 
diff --git a/sw/inc/fldbas.hxx b/sw/inc/fldbas.hxx
index 880fcf1186c0..42beefb1b5e8 100644
--- a/sw/inc/fldbas.hxx
+++ b/sw/inc/fldbas.hxx
@@ -24,6 +24,7 @@
 #include "calbck.hxx"
 #include "nodeoffset.hxx"
 
+#include <com/sun/star/beans/XPropertySet.hpp>
 #include <cppuhelper/weakref.hxx>
 #include <editeng/svxenum.hxx>
 #include <tools/solar.h>
@@ -38,7 +39,6 @@ class SwRootFrame;
 class SvNumberFormatter;
 class IDocumentRedlineAccess;
 class SwGetRefField;
-namespace com::sun::star::beans { class XPropertySet; }
 namespace com::sun::star::uno { class Any; }
 
 typedef struct _xmlTextWriter* xmlTextWriterPtr;
diff --git a/sw/inc/fmtfld.hxx b/sw/inc/fmtfld.hxx
index 32a81303c3eb..5687eaa2ec4d 100644
--- a/sw/inc/fmtfld.hxx
+++ b/sw/inc/fmtfld.hxx
@@ -23,6 +23,7 @@
 #include <cppuhelper/weakref.hxx>
 #include <svl/poolitem.hxx>
 #include <svl/SfxBroadcaster.hxx>
+#include <com/sun/star/text/XTextField.hpp>
 
 #include "swdllapi.h"
 #include "calbck.hxx"
@@ -36,7 +37,6 @@ class SwFieldType;
 class SwDDETable;
 class SwFormatField;
 class IDocumentRedlineAccess;
-namespace com::sun::star::text { class XTextField; }
 
 namespace sw {
     struct FindFormatForFieldHint final : SfxHint {
diff --git a/sw/inc/fmtftn.hxx b/sw/inc/fmtftn.hxx
index d6f80da2ee66..4b2635f6bc90 100644
--- a/sw/inc/fmtftn.hxx
+++ b/sw/inc/fmtftn.hxx
@@ -22,12 +22,12 @@
 #include <rtl/ustring.hxx>
 #include <cppuhelper/weakref.hxx>
 #include <svl/poolitem.hxx>
+#include <com/sun/star/text/XFootnote.hpp>
 
 #include "swdllapi.h"
 #include "calbck.hxx"
 
 namespace com::sun::star::text {
-    class XFootnote;
     class XTextRange;
 }
 
diff --git a/sw/inc/fmtrfmrk.hxx b/sw/inc/fmtrfmrk.hxx
index 698e084ab939..8b28494f9e20 100644
--- a/sw/inc/fmtrfmrk.hxx
+++ b/sw/inc/fmtrfmrk.hxx
@@ -22,13 +22,10 @@
 #include <rtl/ustring.hxx>
 #include <cppuhelper/weakref.hxx>
 #include <svl/poolitem.hxx>
+#include <com/sun/star/text/XTextContent.hpp>
 
 #include "calbck.hxx"
 
-namespace com::sun::star {
-    namespace text { class XTextContent; }
-}
-
 class SwTextRefMark;
 
 // ATT_REFMARK
diff --git a/sw/inc/ndtxt.hxx b/sw/inc/ndtxt.hxx
index c77e062d80cd..1320cb23b9bc 100644
--- a/sw/inc/ndtxt.hxx
+++ b/sw/inc/ndtxt.hxx
@@ -19,6 +19,7 @@
 #pragma once
 
 #include <cppuhelper/weakref.hxx>
+#include <com/sun/star/text/XTextContent.hpp>
 
 #include "swdllapi.h"
 #include "IDocumentContentOperations.hxx"
@@ -70,7 +71,6 @@ namespace com::sun::star {
     namespace uno {
         template < class > class Sequence;
     }
-    namespace text { class XTextContent; }
 }
 
 typedef o3tl::sorted_vector< sal_Int32 > SwSoftPageBreakList;
diff --git a/sw/inc/section.hxx b/sw/inc/section.hxx
index 4350048f9700..2ead8c7c6e7d 100644
--- a/sw/inc/section.hxx
+++ b/sw/inc/section.hxx
@@ -21,6 +21,7 @@
 #define INCLUDED_SW_INC_SECTION_HXX
 
 #include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/text/XTextSection.hpp>
 
 #include <tools/ref.hxx>
 #include <svl/hint.hxx>
@@ -31,9 +32,6 @@
 #include "frmfmt.hxx"
 #include <vector>
 
-namespace com::sun::star {
-    namespace text { class XTextSection; }
-}
 class SwSectionFormat;
 class SwDoc;
 class SwSection;
diff --git a/sw/inc/tox.hxx b/sw/inc/tox.hxx
index 1c2f12a899f6..2e0c94b61e40 100644
--- a/sw/inc/tox.hxx
+++ b/sw/inc/tox.hxx
@@ -29,15 +29,13 @@
 #include <sal/log.hxx>
 #include <svl/listener.hxx>
 #include <svl/poolitem.hxx>
+#include <com/sun/star/text/XDocumentIndexMark.hpp>
 
 #include "calbck.hxx"
 #include "hints.hxx"
 #include "swtypes.hxx"
 #include "toxe.hxx"
 
-namespace com::sun::star {
-    namespace text { class XDocumentIndexMark; }
-}
 class SwTOXType;
 class SwTOXMark;
 class SwTextTOXMark;
diff --git a/sw/source/core/inc/bookmark.hxx b/sw/source/core/inc/bookmark.hxx
index 2c5cfacfcd28..a9c807063f4f 100644
--- a/sw/source/core/inc/bookmark.hxx
+++ b/sw/source/core/inc/bookmark.hxx
@@ -24,6 +24,7 @@
 #include <vcl/keycod.hxx>
 #include <memory>
 #include <string_view>
+#include <com/sun/star/text/XTextContent.hpp>
 
 #include <rtl/ustring.hxx>
 #include <osl/diagnose.h>
@@ -32,8 +33,6 @@
 #include <swrect.hxx>
 #include "FormFieldButton.hxx"
 
-namespace com::sun::star::text { class XTextContent; }
-
 class SwDoc;
 class SwEditWin;
 class SwServerObject;
diff --git a/sw/source/core/txtnode/atrfld.cxx 
b/sw/source/core/txtnode/atrfld.cxx
index 079c8a4b1226..d6fab571bbe9 100644
--- a/sw/source/core/txtnode/atrfld.cxx
+++ b/sw/source/core/txtnode/atrfld.cxx
@@ -293,7 +293,7 @@ void SwFormatField::UpdateTextNode(const SfxPoolItem* pOld, 
const SfxPoolItem* p
 {
     if (pOld && (RES_REMOVE_UNO_OBJECT == pOld->Which()))
     {   // invalidate cached UNO object
-        m_wXTextField = nullptr;
+        m_wXTextField.clear();
         // ??? why does this Modify method not already do this?
         CallSwClientNotify(sw::LegacyModifyHint(pOld, pNew));
         return;
diff --git a/sw/source/core/undo/undobj1.cxx b/sw/source/core/undo/undobj1.cxx
index fa88f6179442..8265ac6e6617 100644
--- a/sw/source/core/undo/undobj1.cxx
+++ b/sw/source/core/undo/undobj1.cxx
@@ -40,6 +40,7 @@
 #include <ndole.hxx>
 #include <frameformats.hxx>
 #include <svx/svdobj.hxx>
+#include <svx/unoshape.hxx>
 
 SwUndoFlyBase::SwUndoFlyBase( SwFrameFormat* pFormat, SwUndoId nUndoId )
     : SwUndo(nUndoId, pFormat->GetDoc())
diff --git a/toolkit/source/controls/unocontrol.cxx 
b/toolkit/source/controls/unocontrol.cxx
index 251c6261c8d4..a87711ec025c 100644
--- a/toolkit/source/controls/unocontrol.cxx
+++ b/toolkit/source/controls/unocontrol.cxx
@@ -660,7 +660,7 @@ void UnoControl::disposing( const EventObject& rEvt )
     if ( maAccessibleContext.get() == rEvt.Source )
     {
         // just in case the context is disposed, but not released - ensure 
that we do not re-use it in the future
-        maAccessibleContext = nullptr;
+        maAccessibleContext.clear();
     }
     else if( mxModel.get() == Reference< XControlModel 
>(rEvt.Source,UNO_QUERY).get() )
     {

Reply via email to