Kaydet (Commit) 00daa67d authored tarafından Stephan Bergmann's avatar Stephan Bergmann

tdf#62381: Stop using NPAPI plugin when NP_Initialize fails

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

Change-Id: I5984ecd88a12d3f22aecaa685bd552f4235fb13d
üst af9f0e5f
......@@ -548,9 +548,14 @@ void XPlugin_Impl::loadPlugin()
return;
#elif defined WNT
PluginComm* pComm = new PluginComm_Impl( m_aDescription.Mimetype,
m_aDescription.PluginName,
(HWND)pEnvData->hWnd );
PluginComm* pComm;
try {
pComm = new PluginComm_Impl(
m_aDescription.Mimetype, m_aDescription.PluginName,
(HWND)pEnvData->hWnd);
} catch (PluginComm_Impl::CannotInitializeException &) {
return;
}
#endif
setPluginComm( pComm );
......
......@@ -86,6 +86,8 @@ class PluginComm_Impl :
virtual long doIt();
public:
struct CannotInitializeException {};
PluginComm_Impl( const OUString& rMIME, const OUString& rName, HWND hWnd );
virtual ~PluginComm_Impl();
......@@ -112,6 +114,7 @@ public:
virtual NPError NPP_GetValue( NPP instance, NPPVariable variable, void *ret_alue );
private:
void shutdown();
BOOL retrieveFunction( TCHAR const * pName, void** ppFunc ) const;
private:
......
......@@ -98,11 +98,19 @@ PluginComm_Impl::PluginComm_Impl( const OUString& /*rMIME*/, const OUString& rNa
"### version failure!" );
m_eCall = eNP_Initialize;
execute();
if (execute() != NPERR_NO_ERROR) {
shutdown();
throw CannotInitializeException();
}
}
PluginComm_Impl::~PluginComm_Impl()
{
shutdown();
}
void PluginComm_Impl::shutdown()
{
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