diff -r cc88aabd867b -r 83c58605f049 userlibandfileserver/fileserver/sfile/sf_plugin_man.cpp --- a/userlibandfileserver/fileserver/sfile/sf_plugin_man.cpp Wed Jun 09 10:31:37 2010 +0100 +++ b/userlibandfileserver/fileserver/sfile/sf_plugin_man.cpp Tue Jul 06 11:40:58 2010 +0100 @@ -745,11 +745,12 @@ FsPluginManager::LockChain(); TInt count = FsPluginManager::ChainCount(); + TInt oldCount = count; TInt i; for(i=0; iiCurrentPlugin = plugin; aRequest->Status() = KRequestPending; @@ -761,6 +762,12 @@ FsPluginManager::LockChain(); __ASSERT_ALWAYS(aRequest->Status().Int()==KErrNone||aRequest->Status().Int()==KErrCancel,Fault(ESessionDisconnectThread2)); count = FsPluginManager::ChainCount(); + //If a plugin was removed whilst the chain was unlocked we need to make sure we don't skip any plugins + if(count != oldCount) + { + i=0; + oldCount = count; + } } FsPluginManager::UnlockChain();