Kaydet (Commit) a1195d9f authored tarafından Stephan Bergmann's avatar Stephan Bergmann Kaydeden (comit) Andras Timar

tdf#62381: Stop using NPAPI plugin when NP_Initialize fails

(...in the Windows-specific code path)

Change-Id: I5984ecd88a12d3f22aecaa685bd552f4235fb13d
(cherry picked from commit 00daa67d)
Reviewed-on: https://gerrit.libreoffice.org/20474Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMichael Stahl <mstahl@redhat.com>
(cherry picked from commit 448fec81)
üst 939441c7
...@@ -548,9 +548,14 @@ void XPlugin_Impl::loadPlugin() ...@@ -548,9 +548,14 @@ void XPlugin_Impl::loadPlugin()
return; return;
#elif defined WNT #elif defined WNT
PluginComm* pComm = new PluginComm_Impl( m_aDescription.Mimetype, PluginComm* pComm;
m_aDescription.PluginName, try {
(HWND)pEnvData->hWnd ); pComm = new PluginComm_Impl(
m_aDescription.Mimetype, m_aDescription.PluginName,
(HWND)pEnvData->hWnd);
} catch (PluginComm_Impl::CannotInitializeException &) {
return;
}
#endif #endif
setPluginComm( pComm ); setPluginComm( pComm );
......
...@@ -86,6 +86,8 @@ class PluginComm_Impl : ...@@ -86,6 +86,8 @@ class PluginComm_Impl :
virtual long doIt(); virtual long doIt();
public: public:
struct CannotInitializeException {};
PluginComm_Impl( const OUString& rMIME, const OUString& rName, HWND hWnd ); PluginComm_Impl( const OUString& rMIME, const OUString& rName, HWND hWnd );
virtual ~PluginComm_Impl(); virtual ~PluginComm_Impl();
...@@ -114,6 +116,7 @@ public: ...@@ -114,6 +116,7 @@ public:
virtual NPError NPP_SetValue( NPP instance, NPNVariable variable, void *ret_alue ); virtual NPError NPP_SetValue( NPP instance, NPNVariable variable, void *ret_alue );
private: private:
void shutdown();
BOOL retrieveFunction( TCHAR const * pName, void** ppFunc ) const; BOOL retrieveFunction( TCHAR const * pName, void** ppFunc ) const;
private: private:
......
...@@ -98,11 +98,19 @@ PluginComm_Impl::PluginComm_Impl( const OUString& /*rMIME*/, const OUString& rNa ...@@ -98,11 +98,19 @@ PluginComm_Impl::PluginComm_Impl( const OUString& /*rMIME*/, const OUString& rNa
"### version failure!" ); "### version failure!" );
m_eCall = eNP_Initialize; m_eCall = eNP_Initialize;
execute(); if (execute() != NPERR_NO_ERROR) {
shutdown();
throw CannotInitializeException();
}
} }
PluginComm_Impl::~PluginComm_Impl() PluginComm_Impl::~PluginComm_Impl()
{
shutdown();
}
void PluginComm_Impl::shutdown()
{ {
if (_plDLL) if (_plDLL)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment