diff -r c1f20ce4abcf -r 3e88ff8f41d5 userlibandfileserver/fileserver/sfile/sf_thread.cpp --- a/userlibandfileserver/fileserver/sfile/sf_thread.cpp Tue Aug 31 16:34:26 2010 +0300 +++ b/userlibandfileserver/fileserver/sfile/sf_thread.cpp Wed Sep 01 12:34:56 2010 +0100 @@ -925,34 +925,24 @@ } -CPluginThread::CPluginThread(CFsPlugin& aPlugin, RLibrary aLibrary) - : iPlugin(aPlugin), iLib(aLibrary) +CPluginThread::CPluginThread(CFsPlugin& aPlugin) + : iPlugin(aPlugin) { /** @prototype */ iOperationLock.Close(); iPlugin.Open(); - - /* - Duplicate the handle to the DLL which created the plugin to prevent - TFsRemovePlugin::DoRequestL() from unmapping the DLL's code segment before - this thread's destructor has been called as the destructor closes the plugin - which results in a call to the plugin's derived destructor contained in the DLL (!) - */ - TInt r = iLib.Duplicate(iThread, EOwnerProcess); - __ASSERT_ALWAYS(r==KErrNone, Fault(EFsThreadConstructor)); } CPluginThread::~CPluginThread() { iPlugin.Close(); - iLib.Close(); } -CPluginThread* CPluginThread::NewL(CFsPlugin& aPlugin, RLibrary aLibrary) +CPluginThread* CPluginThread::NewL(CFsPlugin& aPlugin) { __PRINT(_L("CPluginThread::NewL()")); - CPluginThread* pT=new(ELeave) CPluginThread(aPlugin, aLibrary); + CPluginThread* pT=new(ELeave) CPluginThread(aPlugin); TInt r=pT->Initialise(); /** @prototype */