diff options
Diffstat (limited to 'embedserv')
-rw-r--r-- | embedserv/source/inprocserv/inprocembobj.cxx | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/embedserv/source/inprocserv/inprocembobj.cxx b/embedserv/source/inprocserv/inprocembobj.cxx index c6bad4643031..27c28adff032 100644 --- a/embedserv/source/inprocserv/inprocembobj.cxx +++ b/embedserv/source/inprocserv/inprocembobj.cxx @@ -771,6 +771,7 @@ STDMETHODIMP InprocEmbedDocument_Impl::SetHostNames( LPCOLESTR szContainerApp, L //------------------------------------------------------------------------------- STDMETHODIMP InprocEmbedDocument_Impl::Close( DWORD dwSaveOption ) { + HRESULT ret = S_OK; if ( m_pDefHandler && CheckDefHandler() ) { // no need to close if there is no default handler. @@ -781,14 +782,18 @@ STDMETHODIMP InprocEmbedDocument_Impl::Close( DWORD dwSaveOption ) if ( SUCCEEDED( hr ) && pOleObject ) { hr = pOleObject->Close( dwSaveOption ); + if (!SUCCEEDED(hr)) + ret = hr; hr = CoDisconnectObject( (IUnknown*)(IPersistStorage*)this, 0 ); + if (!(SUCCEEDED(hr) && SUCCEEDED(ret))) + ret = hr; } } // if the object is closed from outside that means that it should go to uninitialized state Clean(); - return S_OK; + return ret; } //------------------------------------------------------------------------------- |