embedserv/source/inprocserv/advisesink.cxx   |    6 
 embedserv/source/inprocserv/advisesink.hxx   |   15 
 embedserv/source/inprocserv/inprocembobj.cxx |  424 ++++++++++-----------------
 embedserv/source/inprocserv/inprocembobj.h   |   18 -
 embedserv/source/inprocserv/smartpointer.hxx |  144 ---------
 helpcontent2                                 |    2 
 solenv/clang-format/excludelist              |    1 
 7 files changed, 189 insertions(+), 421 deletions(-)

New commits:
commit 6689f49b272f43d8cd032d1aab57aaffca619ec7
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Sat Dec 18 18:41:00 2021 +0300
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Sat Dec 18 21:23:42 2021 +0100

    Drop ComSmart and use sal::systools::COMReference
    
    Change-Id: Ib4f5d160b66c01caa507f536fb487bc5ee527815
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127045
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/embedserv/source/inprocserv/advisesink.cxx 
b/embedserv/source/inprocserv/advisesink.cxx
index faf37e20e4fd..f06cffbf62cd 100644
--- a/embedserv/source/inprocserv/advisesink.cxx
+++ b/embedserv/source/inprocserv/advisesink.cxx
@@ -36,7 +36,7 @@ OleWrapperAdviseSink::OleWrapperAdviseSink()
 {
 }
 
-OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& 
pListener )
+OleWrapperAdviseSink::OleWrapperAdviseSink( const sal::systools::COMReference< 
IAdviseSink >& pListener )
 : m_nRefCount( 0 )
 , m_pListener( pListener )
 , m_nAspect( DVASPECT_CONTENT )
@@ -49,7 +49,7 @@ OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< 
IAdviseSink >& pList
 {
 }
 
-OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& 
pListener, FORMATETC* pFormatEtc, DWORD nDataRegFlag )
+OleWrapperAdviseSink::OleWrapperAdviseSink( const sal::systools::COMReference< 
IAdviseSink >& pListener, FORMATETC* pFormatEtc, DWORD nDataRegFlag )
 : m_nRefCount( 0 )
 , m_pListener( pListener )
 , m_nAspect( DVASPECT_CONTENT )
@@ -71,7 +71,7 @@ OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< 
IAdviseSink >& pList
     }
 }
 
-OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& 
pListener, DWORD nAspect, DWORD nViewRegFlag )
+OleWrapperAdviseSink::OleWrapperAdviseSink( const sal::systools::COMReference< 
IAdviseSink >& pListener, DWORD nAspect, DWORD nViewRegFlag )
 : m_nRefCount( 0 )
 , m_pListener( pListener )
 , m_nAspect( nAspect )
diff --git a/embedserv/source/inprocserv/advisesink.hxx 
b/embedserv/source/inprocserv/advisesink.hxx
index 1a89e38b4c3b..03c81f1ff18f 100644
--- a/embedserv/source/inprocserv/advisesink.hxx
+++ b/embedserv/source/inprocserv/advisesink.hxx
@@ -29,7 +29,7 @@
 #endif
 #include <windows.h>
 #include <objidl.h>
-#include "smartpointer.hxx"
+#include <systools/win32/comtools.hxx>
 
 namespace inprocserv
 {
@@ -38,7 +38,7 @@ class OleWrapperAdviseSink : public IAdviseSink
 protected:
     ULONG m_nRefCount;
 
-    ComSmart<IAdviseSink> m_pListener;
+    sal::systools::COMReference<IAdviseSink> m_pListener;
     DWORD m_nListenerID;
 
     std::unique_ptr<FORMATETC> m_pFormatEtc;
@@ -57,14 +57,15 @@ public:
     OleWrapperAdviseSink();
 
     // an AdviseSink for IOleObject interface
-    explicit OleWrapperAdviseSink(const ComSmart<IAdviseSink>& pListener);
+    explicit OleWrapperAdviseSink(const 
sal::systools::COMReference<IAdviseSink>& pListener);
 
     // an AdviseSink for IDataObject interface
-    OleWrapperAdviseSink(const ComSmart<IAdviseSink>& pListener, FORMATETC* 
pFormatEtc,
-                         DWORD nDataRegFlag);
+    OleWrapperAdviseSink(const sal::systools::COMReference<IAdviseSink>& 
pListener,
+                         FORMATETC* pFormatEtc, DWORD nDataRegFlag);
 
     // an AdviseSink for IViewObject interface
-    OleWrapperAdviseSink(const ComSmart<IAdviseSink>& pListener, DWORD 
nAspect, DWORD nViewRegFlag);
+    OleWrapperAdviseSink(const sal::systools::COMReference<IAdviseSink>& 
pListener, DWORD nAspect,
+                         DWORD nViewRegFlag);
 
     virtual ~OleWrapperAdviseSink();
 
@@ -77,7 +78,7 @@ public:
 
     FORMATETC* GetFormatEtc() { return m_pFormatEtc.get(); }
     DWORD GetAspect() { return m_nAspect; }
-    ComSmart<IAdviseSink>& GetOrigAdvise() { return m_pListener; }
+    sal::systools::COMReference<IAdviseSink>& GetOrigAdvise() { return 
m_pListener; }
     void DisconnectOrigAdvise() { m_pListener = nullptr; }
 
     void SetClosed() { m_bClosed = TRUE; }
diff --git a/embedserv/source/inprocserv/inprocembobj.cxx 
b/embedserv/source/inprocserv/inprocembobj.cxx
index cf7fd4a61a6f..32039b631dd9 100644
--- a/embedserv/source/inprocserv/inprocembobj.cxx
+++ b/embedserv/source/inprocserv/inprocembobj.cxx
@@ -68,7 +68,7 @@ void SetName( LPCOLESTR pszNameFromOutside, wchar_t*& 
pOwnName )
     pOwnName[nLen] = 0;
 }
 
-DWORD InsertAdviseLinkToList( const ComSmart<OleWrapperAdviseSink>& 
pOwnAdvise, ComSmart< OleWrapperAdviseSink > pAdvises[] )
+DWORD InsertAdviseLinkToList( const 
sal::systools::COMReference<OleWrapperAdviseSink>& pOwnAdvise, 
sal::systools::COMReference< OleWrapperAdviseSink > pAdvises[] )
 {
     // the result should start from 1 in case of success, the element 0 can be 
used for own needs
     DWORD nResult = 0;
@@ -77,7 +77,7 @@ DWORD InsertAdviseLinkToList( const 
ComSmart<OleWrapperAdviseSink>& pOwnAdvise,
     {
         for ( DWORD nInd = 1; nInd < DEFAULT_ARRAY_LEN && nResult == 0; nInd++ 
)
         {
-            if ( pAdvises[nInd] == pOwnAdvise )
+            if ( pAdvises[nInd].get() == pOwnAdvise.get() )
             {
                 nResult = nInd;
             }
@@ -109,9 +109,8 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
             {
                 // deregister all the listeners
 
-                ComSmart< IOleObject > pOleObject;
-                HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
-                if ( SUCCEEDED( hr ) && pOleObject )
+                sal::systools::COMReference< IOleObject > 
pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
+                if ( pOleObject )
                 {
                     for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
                         if ( m_pOleAdvises[nInd] )
@@ -124,9 +123,8 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
                     pOleObject->SetClientSite( nullptr );
                 }
 
-                ComSmart< IDataObject > pIDataObject;
-                hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
-                if ( SUCCEEDED( hr ) && pIDataObject )
+                sal::systools::COMReference< IDataObject > 
pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
+                if ( pIDataObject )
                 {
                     for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
                         if ( m_pDataAdvises[nInd] )
@@ -137,17 +135,15 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
                         }
                 }
 
-                ComSmart< IViewObject > pIViewObject;
-                hr = m_pDefHandler->QueryInterface( IID_IViewObject, 
reinterpret_cast<void**>(&pIViewObject) );
-                if ( SUCCEEDED( hr ) && pIViewObject )
+                sal::systools::COMReference< IViewObject > 
pIViewObject(m_pDefHandler, sal::systools::COM_QUERY);
+                if ( pIViewObject )
                 {
                     if ( m_pViewAdvise )
                         pIViewObject->SetAdvise( m_pViewAdvise->GetAspect(), 
m_pViewAdvise->GetViewAdviseFlag(), nullptr );
                 }
 
-                ComSmart< IPersistStorage > pPersist;
-                hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, 
reinterpret_cast<void**>(&pPersist) );
-                if ( SUCCEEDED( hr ) && pPersist )
+                sal::systools::COMReference< IPersistStorage > 
pPersist(m_pDefHandler, sal::systools::COM_QUERY);
+                if ( pPersist )
                 {
                     // disconnect the old wrapper from the storage
                     pPersist->HandsOffStorage();
@@ -171,29 +167,26 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
         {
             if ( m_nInitMode == INIT_FROM_STORAGE )
             {
-                ComSmart< IPersistStorage > pPersist;
-                hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, 
reinterpret_cast<void**>(&pPersist) );
+                sal::systools::COMReference< IPersistStorage > 
pPersist(m_pDefHandler, sal::systools::COM_QUERY);
 
                 ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance 
problem
-                if ( SUCCEEDED( hr ) && pPersist && m_pStorage )
+                if ( pPersist && m_pStorage )
                     hr = pPersist->InitNew( m_pStorage.get() );
             }
             else if ( m_nInitMode == LOAD_FROM_STORAGE )
             {
-                ComSmart< IPersistStorage > pPersist;
-                hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, 
reinterpret_cast<void**>(&pPersist) );
+                sal::systools::COMReference< IPersistStorage > 
pPersist(m_pDefHandler, sal::systools::COM_QUERY);
 
                 ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance 
problem
-                if ( SUCCEEDED( hr ) && pPersist && m_pStorage )
+                if ( pPersist && m_pStorage )
                     hr = pPersist->Load( m_pStorage.get() );
             }
             else if ( m_nInitMode == LOAD_FROM_FILE )
             {
-                ComSmart< IPersistFile > pPersistFile;
-                hr = m_pDefHandler->QueryInterface( IID_IPersistFile, 
reinterpret_cast<void**>(&pPersistFile) );
+                sal::systools::COMReference< IPersistFile > 
pPersistFile(m_pDefHandler, sal::systools::COM_QUERY);
 
                 ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance 
problem
-                if ( SUCCEEDED( hr ) && pPersistFile && m_pFileName )
+                if ( pPersistFile && m_pFileName )
                     hr = pPersistFile->Load( m_pFileName, m_nFileOpenMode );
             }
         }
@@ -206,9 +199,8 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
 
         // register all the listeners new
 
-        ComSmart< IOleObject > pOleObject;
-        hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
-        if ( SUCCEEDED( hr ) && pOleObject )
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
+        if ( pOleObject )
         {
             if ( m_pClientSite )
                 pOleObject->SetClientSite( m_pClientSite.get() );
@@ -222,9 +214,8 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
                 }
         }
 
-        ComSmart< IDataObject > pIDataObject;
-        hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
-        if ( SUCCEEDED( hr ) && pIDataObject )
+        sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, 
sal::systools::COM_QUERY);
+        if ( pIDataObject )
         {
             for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
                 if ( m_pDataAdvises[nInd] )
@@ -235,9 +226,8 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
                 }
         }
 
-        ComSmart< IViewObject > pIViewObject;
-        hr = m_pDefHandler->QueryInterface( IID_IViewObject, 
reinterpret_cast<void**>(&pIViewObject) );
-        if ( SUCCEEDED( hr ) && pIViewObject )
+        sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, 
sal::systools::COM_QUERY);
+        if ( pIViewObject )
         {
             if ( m_pViewAdvise )
                 pIViewObject->SetAdvise( m_pViewAdvise->GetAspect(), 
m_pViewAdvise->GetViewAdviseFlag(), m_pViewAdvise.get() );
@@ -255,17 +245,8 @@ void InprocEmbedDocument_Impl::Clean()
     // no DisconnectOrigAdvise() call here, since it is no explicit 
disconnection
     for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
     {
-        if ( m_pOleAdvises[nInd] )
-        {
-            ComSmart< OleWrapperAdviseSink > pAdvise = m_pOleAdvises[nInd];
-            m_pOleAdvises[nInd] = nullptr;
-        }
-
-        if ( m_pDataAdvises[nInd] )
-        {
-            ComSmart< OleWrapperAdviseSink > pAdvise = m_pDataAdvises[nInd];
-            m_pDataAdvises[nInd] = nullptr;
-        }
+        m_pOleAdvises[nInd].clear();
+        m_pDataAdvises[nInd].clear();
     }
 
     m_pViewAdvise = nullptr;
@@ -421,11 +402,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::IsDirty()
 
     if ( CheckDefHandler() )
     {
-        ComSmart< IPersistStorage > pPersist;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, 
reinterpret_cast<void**>(&pPersist) );
+        sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pPersist )
+        if ( pPersist )
             return pPersist->IsDirty();
     }
 
@@ -437,13 +417,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::InitNew( IStorage *p
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IPersistStorage > pPersist;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, 
reinterpret_cast<void**>(&pPersist) );
+        sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pPersist )
+        if ( pPersist )
         {
-            hr = pPersist->InitNew( pStg );
+            HRESULT hr = pPersist->InitNew( pStg );
             if ( SUCCEEDED( hr ) )
             {
                 m_nInitMode = INIT_FROM_STORAGE;
@@ -469,13 +448,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Load( IStorage *pStg
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IPersistStorage > pPersist;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, 
reinterpret_cast<void**>(&pPersist) );
+        sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pPersist )
+        if ( pPersist )
         {
-            hr = pPersist->Load( pStg );
+            HRESULT hr = pPersist->Load( pStg );
             if ( SUCCEEDED( hr ) )
             {
                 m_nInitMode = LOAD_FROM_STORAGE;
@@ -504,11 +482,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Save( IStorage *pStg
 
     if ( CheckDefHandler() )
     {
-        ComSmart< IPersistStorage > pPersist;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, 
reinterpret_cast<void**>(&pPersist) );
+        sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pPersist )
+        if ( pPersist )
             return pPersist->Save( pStgSave, fSameAsLoad );
     }
 
@@ -528,13 +505,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SaveCompleted( IStor
 
     if ( CheckDefHandler() )
     {
-        ComSmart< IPersistStorage > pPersist;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, 
reinterpret_cast<void**>(&pPersist) );
+        sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pPersist )
+        if ( pPersist )
         {
-            hr = pPersist->SaveCompleted( pStgNew );
+            HRESULT hr = pPersist->SaveCompleted( pStgNew );
             if ( SUCCEEDED( hr ) )
             {
                 m_nInitMode = LOAD_FROM_STORAGE;
@@ -563,13 +539,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::HandsOffStorage()
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IPersistStorage > pPersist;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, 
reinterpret_cast<void**>(&pPersist) );
+        sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pPersist )
+        if ( pPersist )
         {
-            hr = pPersist->HandsOffStorage();
+            HRESULT hr = pPersist->HandsOffStorage();
             if ( SUCCEEDED( hr ) )
             {
                 m_pStorage = nullptr;
@@ -588,13 +563,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Load( LPCOLESTR pszF
 {
     if ( CheckDefHandler() && pszFileName )
     {
-        ComSmart< IPersistFile > pPersist;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, 
reinterpret_cast<void**>(&pPersist) );
+        sal::systools::COMReference< IPersistFile > pPersist(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pPersist )
+        if ( pPersist )
         {
-            hr = pPersist->Load( pszFileName, dwMode );
+            HRESULT hr = pPersist->Load( pszFileName, dwMode );
             if ( SUCCEEDED( hr ) )
             {
                 m_nInitMode = LOAD_FROM_FILE;
@@ -618,11 +592,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Save( LPCOLESTR pszF
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IPersistFile > pPersist;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, 
reinterpret_cast<void**>(&pPersist) );
+        sal::systools::COMReference< IPersistFile > pPersist(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pPersist )
+        if ( pPersist )
             return pPersist->Save( pszFileName, fRemember );
     }
 
@@ -634,13 +607,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SaveCompleted( LPCOL
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IPersistFile > pPersist;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, 
reinterpret_cast<void**>(&pPersist) );
+        sal::systools::COMReference< IPersistFile > pPersist(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pPersist )
+        if ( pPersist )
         {
-            hr = pPersist->SaveCompleted( pszFileName );
+            HRESULT hr = pPersist->SaveCompleted( pszFileName );
             if ( SUCCEEDED( hr ) )
             {
                 m_nInitMode = LOAD_FROM_STORAGE;
@@ -663,11 +635,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetCurFile( LPOLESTR
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IPersistFile > pPersist;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, 
reinterpret_cast<void**>(&pPersist) );
+        sal::systools::COMReference< IPersistFile > pPersist(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pPersist )
+        if ( pPersist )
             return pPersist->GetCurFile( ppszFileName );
     }
 
@@ -693,11 +664,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SetClientSite( IOleC
 
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
         {
             HRESULT hr2 = pOleObject->SetClientSite( pSite );
             if ( SUCCEEDED( hr2 ) )
@@ -727,11 +697,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetClientSite( IOleC
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->GetClientSite( pSite );
     }
 
@@ -744,13 +713,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SetHostNames( LPCOLE
 
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
         {
-            hr = pOleObject->SetHostNames( szContainerApp, szContainerObj );
+            pOleObject->SetHostNames( szContainerApp, szContainerObj );
         }
     }
 
@@ -764,13 +732,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Close( DWORD dwSaveO
     if ( m_pDefHandler && CheckDefHandler() )
     {
         // no need to close if there is no default handler.
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
         {
-            hr = pOleObject->Close( dwSaveOption );
+            HRESULT hr = pOleObject->Close( dwSaveOption );
             if (!SUCCEEDED(hr))
                ret = hr;
             hr = CoDisconnectObject( 
static_cast<IUnknown*>(static_cast<IPersistStorage*>(this)), 0 );
@@ -790,11 +757,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SetMoniker( DWORD dw
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->SetMoniker( dwWhichMoniker, pmk );
     }
 
@@ -806,11 +772,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetMoniker( DWORD dw
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->GetMoniker( dwAssign, dwWhichMoniker, ppmk );
     }
 
@@ -822,11 +787,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::InitFromData( IDataO
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->InitFromData( pDataObject, fCreation, 
dwReserved );
     }
 
@@ -838,11 +802,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetClipboardData( DW
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->GetClipboardData( dwReserved, ppDataObject );
     }
 
@@ -860,14 +823,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::DoVerb(
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
         {
-            hr = pOleObject->DoVerb( iVerb, pMsg, pActiveSite, nLong, hWin, 
pRect );
-            return hr;
+            return pOleObject->DoVerb( iVerb, pMsg, pActiveSite, nLong, hWin, 
pRect );
         }
 
     }
@@ -880,11 +841,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::EnumVerbs( IEnumOLEV
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->EnumVerbs( ppEnumOleVerb );
     }
 
@@ -897,11 +857,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Update()
 
     if ( m_pDefHandler && CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->Update();
     }
 
@@ -913,11 +872,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::IsUpToDate()
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->IsUpToDate();
     }
 
@@ -938,11 +896,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetUserType( DWORD d
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->GetUserType( dwFormOfType, pszUserType );
     }
 
@@ -954,11 +911,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SetExtent( DWORD dwD
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->SetExtent( dwDrawAspect, psizel );
     }
 
@@ -970,11 +926,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetExtent( DWORD dwD
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->GetExtent( dwDrawAspect, psizel );
     }
 
@@ -997,14 +952,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Advise( IAdviseSink
 
     if ( pAdvSink && CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
         {
-            ComSmart<IAdviseSink> aListener(pAdvSink);
-            ComSmart<OleWrapperAdviseSink> pOwnAdvise(new 
OleWrapperAdviseSink(aListener));
+            sal::systools::COMReference pOwnAdvise(new 
OleWrapperAdviseSink(pAdvSink));
             DWORD nRegID = 0;
 
             if ( SUCCEEDED( pOleObject->Advise( pOwnAdvise.get(), &nRegID ) ) 
&& nRegID > 0 )
@@ -1030,11 +983,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Unadvise( DWORD dwCo
     {
         if ( m_pDefHandler )
         {
-            ComSmart< IOleObject > pOleObject;
-            HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+            sal::systools::COMReference< IOleObject > 
pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
 
             ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-            if ( SUCCEEDED( hr ) && pOleObject )
+            if ( pOleObject )
             {
                 DWORD nID = m_pOleAdvises[dwConnection]->GetRegID();
                 pOleObject->Unadvise( nID );
@@ -1061,11 +1013,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetMiscStatus( DWORD
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->GetMiscStatus( dwAspect, pdwStatus );
     }
 
@@ -1077,11 +1028,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SetColorScheme( LOGP
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleObject > pOleObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, 
reinterpret_cast<void**>(&pOleObject) );
+        sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pOleObject )
+        if ( pOleObject )
             return pOleObject->SetColorScheme( pLogpal );
     }
 
@@ -1094,11 +1044,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetData( FORMATETC *
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDataObject > pIDataObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
+        sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDataObject )
+        if ( pIDataObject )
             return pIDataObject->GetData( pFormatetc, pMedium );
     }
 
@@ -1110,11 +1059,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetDataHere( FORMATE
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDataObject > pIDataObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
+        sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDataObject )
+        if ( pIDataObject )
             return pIDataObject->GetDataHere( pFormatetc, pMedium );
     }
 
@@ -1126,11 +1074,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::QueryGetData( FORMAT
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDataObject > pIDataObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
+        sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDataObject )
+        if ( pIDataObject )
             return pIDataObject->QueryGetData( pFormatetc );
     }
 
@@ -1142,11 +1089,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetCanonicalFormatEt
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDataObject > pIDataObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
+        sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDataObject )
+        if ( pIDataObject )
             return pIDataObject->GetCanonicalFormatEtc( pFormatetcIn, 
pFormatetcOut );
     }
 
@@ -1158,11 +1104,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SetData( FORMATETC *
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDataObject > pIDataObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
+        sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDataObject )
+        if ( pIDataObject )
             return pIDataObject->SetData( pFormatetc, pMedium, fRelease );
     }
 
@@ -1174,11 +1119,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::EnumFormatEtc( DWORD
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDataObject > pIDataObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
+        sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDataObject )
+        if ( pIDataObject )
             return pIDataObject->EnumFormatEtc( dwDirection, ppFormatetc );
     }
 
@@ -1201,13 +1145,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::DAdvise( FORMATETC *
 
     if ( pAdvSink && CheckDefHandler() )
     {
-        ComSmart< IDataObject > pIDataObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
+        sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDataObject )
+        if ( pIDataObject )
         {
-            ComSmart< OleWrapperAdviseSink > pOwnAdvise( new 
OleWrapperAdviseSink( ComSmart<IAdviseSink>( pAdvSink ), pFormatetc, advf ) );
+            sal::systools::COMReference pOwnAdvise( new OleWrapperAdviseSink( 
pAdvSink, pFormatetc, advf ) );
             DWORD nRegID = 0;
 
             if ( SUCCEEDED( pIDataObject->DAdvise( pFormatetc, advf, 
pOwnAdvise.get(), &nRegID ) ) && nRegID > 0 )
@@ -1233,11 +1176,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::DUnadvise( DWORD dwC
     {
         if ( CheckDefHandler() )
         {
-            ComSmart< IDataObject > pIDataObject;
-            HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
+            sal::systools::COMReference< IDataObject > 
pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
 
             ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-            if ( SUCCEEDED( hr ) && pIDataObject )
+            if ( pIDataObject )
             {
                 DWORD nID = m_pDataAdvises[dwConnection]->GetRegID();
                 pIDataObject->DUnadvise( nID );
@@ -1258,11 +1200,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::EnumDAdvise( IEnumST
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDataObject > pIDataObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, 
reinterpret_cast<void**>(&pIDataObject) );
+        sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDataObject )
+        if ( pIDataObject )
             return pIDataObject->EnumDAdvise( ppenumAdvise );
     }
 
@@ -1275,11 +1216,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetRunningClass( LPC
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IRunnableObject > pIRunObj;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, 
reinterpret_cast<void**>(&pIRunObj) );
+        sal::systools::COMReference< IRunnableObject > pIRunObj(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIRunObj )
+        if ( pIRunObj )
             return pIRunObj->GetRunningClass( lpClsid );
     }
 
@@ -1291,11 +1231,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Run( LPBINDCTX pbc )
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IRunnableObject > pIRunObj;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, 
reinterpret_cast<void**>(&pIRunObj) );
+        sal::systools::COMReference< IRunnableObject > pIRunObj(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIRunObj )
+        if ( pIRunObj )
             return pIRunObj->Run( pbc );
     }
 
@@ -1306,11 +1245,10 @@ BOOL STDMETHODCALLTYPE 
InprocEmbedDocument_Impl::IsRunning()
 {
     if (CheckDefHandler())
     {
-        ComSmart< IRunnableObject > pIRunObj;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, 
reinterpret_cast<void**>(&pIRunObj) );
+        sal::systools::COMReference< IRunnableObject > pIRunObj(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIRunObj )
+        if ( pIRunObj )
             return pIRunObj->IsRunning();
     }
 
@@ -1321,11 +1259,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::LockRunning( BOOL fL
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IRunnableObject > pIRunObj;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, 
reinterpret_cast<void**>(&pIRunObj) );
+        sal::systools::COMReference< IRunnableObject > pIRunObj(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIRunObj )
+        if ( pIRunObj )
             return pIRunObj->LockRunning( fLock, fLastUnlockCloses );
     }
 
@@ -1337,11 +1274,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SetContainedObject(
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IRunnableObject > pIRunObj;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, 
reinterpret_cast<void**>(&pIRunObj) );
+        sal::systools::COMReference< IRunnableObject > pIRunObj(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIRunObj )
+        if ( pIRunObj )
             return pIRunObj->SetContainedObject( fContained );
     }
 
@@ -1355,11 +1291,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Draw( DWORD dwDrawAs
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IViewObject > pIViewObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, 
reinterpret_cast<void**>(&pIViewObject) );
+        sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIViewObject )
+        if ( pIViewObject )
             return pIViewObject->Draw( dwDrawAspect, lindex, pvAspect, ptd, 
hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue );
     }
 
@@ -1371,11 +1306,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetColorSet( DWORD d
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IViewObject > pIViewObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, 
reinterpret_cast<void**>(&pIViewObject) );
+        sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIViewObject )
+        if ( pIViewObject )
             return pIViewObject->GetColorSet( dwDrawAspect, lindex, pvAspect, 
ptd, hicTargetDev, ppColorSet );
     }
 
@@ -1387,11 +1321,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Freeze( DWORD dwDraw
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IViewObject > pIViewObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, 
reinterpret_cast<void**>(&pIViewObject) );
+        sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIViewObject )
+        if ( pIViewObject )
             return pIViewObject->Freeze( dwDrawAspect, lindex, pvAspect, 
pdwFreeze );
     }
 
@@ -1403,11 +1336,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Unfreeze( DWORD dwFr
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IViewObject > pIViewObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, 
reinterpret_cast<void**>(&pIViewObject) );
+        sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIViewObject )
+        if ( pIViewObject )
             return pIViewObject->Unfreeze( dwFreeze );
     }
 
@@ -1427,14 +1359,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SetAdvise( DWORD asp
 
     if ( pAdvSink && CheckDefHandler() )
     {
-        ComSmart< IViewObject > pIViewObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, 
reinterpret_cast<void**>(&pIViewObject) );
+        sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIViewObject )
+        if ( pIViewObject )
         {
-            ComSmart<IAdviseSink> aListener(pAdvSink);
-            ComSmart<OleWrapperAdviseSink> pOwnAdvise(new 
OleWrapperAdviseSink(aListener, aspects, advf));
+            sal::systools::COMReference pOwnAdvise(new 
OleWrapperAdviseSink(pAdvSink, aspects, advf));
 
             if ( SUCCEEDED( pIViewObject->SetAdvise( aspects, advf, 
pOwnAdvise.get() ) ) )
             {
@@ -1477,11 +1407,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetExtent( DWORD dwD
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IViewObject2 > pIViewObject2;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject2, 
reinterpret_cast<void**>(&pIViewObject2) );
+        sal::systools::COMReference< IViewObject2 > 
pIViewObject2(m_pDefHandler, sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIViewObject2 )
+        if ( pIViewObject2 )
             return pIViewObject2->GetExtent( dwDrawAspect, lindex, ptd, 
lpsizel );
     }
 
@@ -1495,11 +1424,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetWindow( HWND *phw
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleWindow > pIOleWindow;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleWindow, 
reinterpret_cast<void**>(&pIOleWindow) );
+        sal::systools::COMReference< IOleWindow > pIOleWindow(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleWindow )
+        if ( pIOleWindow )
             return pIOleWindow->GetWindow( phwnd );
     }
 
@@ -1511,11 +1439,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::ContextSensitiveHelp
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleWindow > pIOleWindow;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleWindow, 
reinterpret_cast<void**>(&pIOleWindow) );
+        sal::systools::COMReference< IOleWindow > pIOleWindow(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleWindow )
+        if ( pIOleWindow )
             return pIOleWindow->ContextSensitiveHelp( fEnterMode );
     }
 
@@ -1529,11 +1456,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::InPlaceDeactivate()
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, 
reinterpret_cast<void**>(&pIOleInPlaceObject) );
+        sal::systools::COMReference< IOleInPlaceObject > 
pIOleInPlaceObject(m_pDefHandler, sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
+        if ( pIOleInPlaceObject )
             return pIOleInPlaceObject->InPlaceDeactivate();
     }
 
@@ -1545,11 +1471,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::UIDeactivate()
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, 
reinterpret_cast<void**>(&pIOleInPlaceObject) );
+        sal::systools::COMReference< IOleInPlaceObject > 
pIOleInPlaceObject(m_pDefHandler, sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
+        if ( pIOleInPlaceObject )
             return pIOleInPlaceObject->UIDeactivate();
     }
 
@@ -1561,11 +1486,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::SetObjectRects( LPCR
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, 
reinterpret_cast<void**>(&pIOleInPlaceObject) );
+        sal::systools::COMReference< IOleInPlaceObject > 
pIOleInPlaceObject(m_pDefHandler, sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
+        if ( pIOleInPlaceObject )
             return pIOleInPlaceObject->SetObjectRects( lprcPosRect, 
lprcClipRect );
     }
 
@@ -1577,11 +1501,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::ReactivateAndUndo()
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, 
reinterpret_cast<void**>(&pIOleInPlaceObject) );
+        sal::systools::COMReference< IOleInPlaceObject > 
pIOleInPlaceObject(m_pDefHandler, sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
+        if ( pIOleInPlaceObject )
             return pIOleInPlaceObject->ReactivateAndUndo();
     }
 
@@ -1595,11 +1518,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetTypeInfoCount( UI
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDispatch > pIDispatch;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, 
reinterpret_cast<void**>(&pIDispatch) );
+        sal::systools::COMReference< IDispatch > pIDispatch(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDispatch )
+        if ( pIDispatch )
             return pIDispatch->GetTypeInfoCount( pctinfo );
     }
 
@@ -1611,11 +1533,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetTypeInfo( UINT iT
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDispatch > pIDispatch;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, 
reinterpret_cast<void**>(&pIDispatch) );
+        sal::systools::COMReference< IDispatch > pIDispatch(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDispatch )
+        if ( pIDispatch )
             return pIDispatch->GetTypeInfo( iTInfo, lcid, ppTInfo );
     }
 
@@ -1627,11 +1548,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::GetIDsOfNames( REFII
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDispatch > pIDispatch;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, 
reinterpret_cast<void**>(&pIDispatch) );
+        sal::systools::COMReference< IDispatch > pIDispatch(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDispatch )
+        if ( pIDispatch )
             return pIDispatch->GetIDsOfNames( riid, rgszNames, cNames, lcid, 
rgDispId );
     }
 
@@ -1643,11 +1563,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::Invoke( DISPID dispI
 {
     if ( CheckDefHandler() )
     {
-        ComSmart< IDispatch > pIDispatch;
-        HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, 
reinterpret_cast<void**>(&pIDispatch) );
+        sal::systools::COMReference< IDispatch > pIDispatch(m_pDefHandler, 
sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
-        if ( SUCCEEDED( hr ) && pIDispatch )
+        if ( pIDispatch )
             return pIDispatch->Invoke( dispIdMember, riid, lcid, wFlags, 
pDispParams, pVarResult, pExcepInfo, puArgErr );
     }
 
@@ -1684,11 +1603,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::InternalCacheWrapper
 {
     if ( m_rOwnDocument.CheckDefHandler() )
     {
-        ComSmart< IOleCache > pIOleCache;
-        HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( 
IID_IOleCache, reinterpret_cast<void**>(&pIOleCache) );
+        sal::systools::COMReference< IOleCache > 
pIOleCache(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid 
reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleCache )
+        if ( pIOleCache )
             return pIOleCache->Cache( pformatetc, advf, pdwConnection );
     }
 
@@ -1700,11 +1618,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::InternalCacheWrapper
 {
     if ( m_rOwnDocument.CheckDefHandler() )
     {
-        ComSmart< IOleCache > pIOleCache;
-        HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( 
IID_IOleCache, reinterpret_cast<void**>(&pIOleCache) );
+        sal::systools::COMReference< IOleCache > 
pIOleCache(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid 
reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleCache )
+        if ( pIOleCache )
             return pIOleCache->Uncache( dwConnection );
     }
 
@@ -1716,11 +1633,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::InternalCacheWrapper
 {
     if ( m_rOwnDocument.CheckDefHandler() )
     {
-        ComSmart< IOleCache > pIOleCache;
-        HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( 
IID_IOleCache, reinterpret_cast<void**>(&pIOleCache) );
+        sal::systools::COMReference< IOleCache > 
pIOleCache(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid 
reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleCache )
+        if ( pIOleCache )
             return pIOleCache->EnumCache( ppenumSTATDATA );
     }
 
@@ -1732,11 +1648,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::InternalCacheWrapper
 {
     if ( m_rOwnDocument.CheckDefHandler() )
     {
-        ComSmart< IOleCache > pIOleCache;
-        HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( 
IID_IOleCache, reinterpret_cast<void**>(&pIOleCache) );
+        sal::systools::COMReference< IOleCache > 
pIOleCache(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid 
reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleCache )
+        if ( pIOleCache )
             return pIOleCache->InitCache( pDataObject );
     }
 
@@ -1748,11 +1663,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::InternalCacheWrapper
 {
     if ( m_rOwnDocument.CheckDefHandler() )
     {
-        ComSmart< IOleCache > pIOleCache;
-        HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( 
IID_IOleCache, reinterpret_cast<void**>(&pIOleCache) );
+        sal::systools::COMReference< IOleCache > 
pIOleCache(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid 
reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleCache )
+        if ( pIOleCache )
             return pIOleCache->SetData( pformatetc, pmedium, fRelease );
     }
 
@@ -1765,11 +1679,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::InternalCacheWrapper
 {
     if ( m_rOwnDocument.CheckDefHandler() )
     {
-        ComSmart< IOleCache2 > pIOleCache2;
-        HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( 
IID_IOleCache2, reinterpret_cast<void**>(&pIOleCache2) );
+        sal::systools::COMReference< IOleCache2 > 
pIOleCache2(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid 
reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleCache2 )
+        if ( pIOleCache2 )
             return pIOleCache2->UpdateCache( pDataObject, grfUpdf, pReserved );
     }
 
@@ -1781,11 +1694,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP 
InprocEmbedDocument_Impl::InternalCacheWrapper
 {
     if ( m_rOwnDocument.CheckDefHandler() )
     {
-        ComSmart< IOleCache2 > pIOleCache2;
-        HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( 
IID_IOleCache2, reinterpret_cast<void**>(&pIOleCache2) );
+        sal::systools::COMReference< IOleCache2 > 
pIOleCache2(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
 
         ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid 
reentrance problem
-        if ( SUCCEEDED( hr ) && pIOleCache2 )
+        if ( pIOleCache2 )
             return pIOleCache2->DiscardCache( dwDiscardOptions );
     }
 
diff --git a/embedserv/source/inprocserv/inprocembobj.h 
b/embedserv/source/inprocserv/inprocembobj.h
index 8b0b8bd89e92..8591a56c3e87 100644
--- a/embedserv/source/inprocserv/inprocembobj.h
+++ b/embedserv/source/inprocserv/inprocembobj.h
@@ -26,7 +26,7 @@
 #include <windows.h>
 #include <oleidl.h>
 
-#include "smartpointer.hxx"
+#include <systools/win32/comtools.hxx>
 #include "advisesink.hxx"
 
 #define DEFAULT_ARRAY_LEN 256
@@ -69,24 +69,24 @@ class InprocEmbedDocument_Impl : public 
InprocCountedObject_Impl
 
     GUID  m_guid;
 
-    ComSmart< IUnknown > m_pDefHandler;
+    sal::systools::COMReference< IUnknown > m_pDefHandler;
     InitModes m_nInitMode;
 
     DWORD m_nFileOpenMode;
     wchar_t* m_pFileName;
 
-    ComSmart< IStorage > m_pStorage;
+    sal::systools::COMReference< IStorage > m_pStorage;
 
-    ComSmart< IOleClientSite > m_pClientSite;
-    ComSmart< IOleContainer >  m_pOleContainer;
+    sal::systools::COMReference< IOleClientSite > m_pClientSite;
+    sal::systools::COMReference< IOleContainer >  m_pOleContainer;
 
     ULONG m_nCallsOnStack;
 
     // the listeners have wrappers that are directly connected to the object 
and call the listeners,
     // the wrappers will be reconnected correctly to the new default inprocess 
holder object
-    ComSmart< OleWrapperAdviseSink > m_pOleAdvises[DEFAULT_ARRAY_LEN];
-    ComSmart< OleWrapperAdviseSink > m_pDataAdvises[DEFAULT_ARRAY_LEN];
-    ComSmart< OleWrapperAdviseSink > m_pViewAdvise;
+    sal::systools::COMReference< OleWrapperAdviseSink > 
m_pOleAdvises[DEFAULT_ARRAY_LEN];
+    sal::systools::COMReference< OleWrapperAdviseSink > 
m_pDataAdvises[DEFAULT_ARRAY_LEN];
+    sal::systools::COMReference< OleWrapperAdviseSink > m_pViewAdvise;
 
     class InternalCacheWrapper final: public IOleCache2
     {
@@ -134,7 +134,7 @@ public:
     {}
 
     BOOL CheckDefHandler();
-    ComSmart< IUnknown >& GetDefHandler() { return m_pDefHandler; }
+    sal::systools::COMReference< IUnknown >& GetDefHandler() { return 
m_pDefHandler; }
 
     /* IUnknown methods */
     STDMETHOD(QueryInterface)(REFIID riid, void ** ppvObj) override;
diff --git a/embedserv/source/inprocserv/smartpointer.hxx 
b/embedserv/source/inprocserv/smartpointer.hxx
deleted file mode 100644
index d5673b4415c7..000000000000
--- a/embedserv/source/inprocserv/smartpointer.hxx
+++ /dev/null
@@ -1,144 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_EMBEDSERV_SOURCE_INPROCSERV_SMARTPOINTER_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_INPROCSERV_SMARTPOINTER_HXX
-
-namespace inprocserv{
-
-template< class T > class ComSmart
-{
-    T* m_pInterface;
-
-    void OwnRelease()
-    {
-        if ( m_pInterface )
-        {
-            T* pInterface = m_pInterface;
-            m_pInterface = nullptr;
-            pInterface->Release();
-        }
-    }
-
-public:
-    ComSmart()
-    : m_pInterface( nullptr )
-    {}
-
-    ComSmart( const ComSmart<T>& rObj )
-    : m_pInterface( rObj.m_pInterface )
-    {
-        if ( m_pInterface != nullptr )
-            m_pInterface->AddRef();
-    }
-
-    explicit ComSmart( T* pInterface )
-    : m_pInterface( pInterface )
-    {
-         if ( m_pInterface != nullptr )
-            m_pInterface->AddRef();
-    }
-
-    ~ComSmart()
-    {
-        OwnRelease();
-    }
-
-    ComSmart& operator=( const ComSmart<T>& rObj )
-    {
-        if(this == &rObj)
-            return *this;
-
-        OwnRelease();
-
-        m_pInterface = rObj.m_pInterface;
-
-        if ( m_pInterface != nullptr )
-            m_pInterface->AddRef();
-
-        return *this;
-    }
-
-    ComSmart<T>& operator=( T* pInterface )
-    {
-        OwnRelease();
-
-        m_pInterface = pInterface;
-
-        if ( m_pInterface != nullptr )
-            m_pInterface->AddRef();
-
-        return *this;
-    }
-
-    explicit operator bool() const
-    {
-        return m_pInterface != nullptr;
-    }
-
-    T* get() const
-    {
-        return m_pInterface;
-    }
-
-    T& operator*() const
-    {
-        return *m_pInterface;
-    }
-
-    T** operator&()
-    {
-        OwnRelease();
-
-        m_pInterface = nullptr;
-
-        return &m_pInterface;
-    }
-
-    T* operator->() const
-    {
-        return m_pInterface;
-    }
-
-    BOOL operator==( const ComSmart<T>& rObj ) const
-    {
-        return ( m_pInterface == rObj.m_pInterface );
-    }
-
-    BOOL operator!=( const ComSmart<T>& rObj ) const
-    {
-        return ( m_pInterface != rObj.m_pInterface );
-    }
-
-    bool operator==( const T* pInterface ) const
-    {
-        return ( m_pInterface == pInterface );
-    }
-
-    BOOL operator!=( const T* pInterface ) const
-    {
-        return ( m_pInterface != pInterface );
-    }
-};
-
-} // namespace inprocserv
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index b0d534e3773a..22c11a641d36 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -3583,7 +3583,6 @@ embedserv/source/inprocserv/advisesink.cxx
 embedserv/source/inprocserv/dllentry.cxx
 embedserv/source/inprocserv/inprocembobj.cxx
 embedserv/source/inprocserv/inprocembobj.h
-embedserv/source/inprocserv/smartpointer.hxx
 emfio/inc/emfreader.hxx
 emfio/inc/mtftools.hxx
 emfio/inc/wmfreader.hxx
commit 8e300570d5ad745441d560e7b0ea2e7cb66fa21e
Author:     Johnny_M <kla...@partyheld.de>
AuthorDate: Sat Dec 18 21:23:39 2021 +0100
Commit:     Gerrit Code Review <ger...@gerrit.libreoffice.org>
CommitDate: Sat Dec 18 21:23:39 2021 +0100

    Update git submodules
    
    * Update helpcontent2 from branch 'master'
      to 2cfcfbcaae15be44630c6a98e9f60cf808bb9cbc
      - tdf#132643 Translate German section IDs
    
        Change-Id: I63cf5868378583988da49db2663f57f04125fdd1
        Reviewed-on: https://gerrit.libreoffice.org/c/help/+/127034
        Tested-by: Jenkins
        Reviewed-by: Olivier Hallot <olivier.hal...@libreoffice.org>

diff --git a/helpcontent2 b/helpcontent2
index 2ad6d936dc31..2cfcfbcaae15 160000
--- a/helpcontent2
+++ b/helpcontent2
@@ -1 +1 @@
-Subproject commit 2ad6d936dc315d93ee29d8c837737674b947d5b2
+Subproject commit 2cfcfbcaae15be44630c6a98e9f60cf808bb9cbc

Reply via email to