Resolves: tdf#101971 OleLoad under structured exception guards

sample pptx crashes down in the depths of (apparently pre-installed on
32bit Windows 10) Flash.ocx

Change-Id: I4e083d492e56e72df47b2c172d7f07f0e39b82ea
Reviewed-on: https://gerrit.libreoffice.org/29199
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>
(cherry picked from commit 373b44a2fcbe78e8a3ff14cd410826af151a6adf)
Reviewed-on: https://gerrit.libreoffice.org/29212
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
diff --git a/embeddedobj/source/msole/olecomponent.cxx b/embeddedobj/source/msole/olecomponent.cxx
index 6a7b9e4..2f59f35 100644
--- a/embeddedobj/source/msole/olecomponent.cxx
+++ b/embeddedobj/source/msole/olecomponent.cxx
@@ -715,6 +715,19 @@ sal_Bool OleComponent::InitializeObject_Impl()
    return sal_True;
}

namespace
{
    HRESULT OleLoadSeh(LPSTORAGE pIStorage, LPVOID* ppObj)
    {
        HRESULT hr = E_FAIL;
        __try {
            hr = OleLoad(pIStorage, IID_IUnknown, NULL, ppObj);
        } __except( EXCEPTION_EXECUTE_HANDLER ) {
            return E_FAIL;
        }
        return hr;
    }
}

void OleComponent::LoadEmbeddedObject( const OUString& aTempURL )
{
@@ -730,7 +743,7 @@ void OleComponent::LoadEmbeddedObject( const OUString& aTempURL )
    if ( FAILED( hr ) || !m_pNativeImpl->m_pIStorage )
        throw io::IOException(); // TODO: transport error code?

    hr = OleLoad( m_pNativeImpl->m_pIStorage, IID_IUnknown, NULL, (void**)&m_pNativeImpl->m_pObj );
    hr = OleLoadSeh(m_pNativeImpl->m_pIStorage, (void**)&m_pNativeImpl->m_pObj);
    if ( FAILED( hr ) || !m_pNativeImpl->m_pObj )
    {
        throw uno::RuntimeException();
@@ -963,7 +976,7 @@ void OleComponent::InitEmbeddedCopyOfLink( OleComponent* pOleLinkComponent )
                {
                    hr = pObjectStorage->CopyTo( 0, NULL, NULL, m_pNativeImpl->m_pIStorage );
                    if ( SUCCEEDED( hr ) )
                        hr = OleLoad( m_pNativeImpl->m_pIStorage, IID_IUnknown, NULL, (void**)&m_pNativeImpl->m_pObj );
                        hr = OleLoadSeh(m_pNativeImpl->m_pIStorage, (void**)&m_pNativeImpl->m_pObj);
                }
            }
        }