diff -r b5fbb9b25d57 -r 67369d1b217f emailservices/emailframework/commonlib/src/CFSMailBox.cpp --- a/emailservices/emailframework/commonlib/src/CFSMailBox.cpp Tue May 11 15:57:15 2010 +0300 +++ b/emailservices/emailframework/commonlib/src/CFSMailBox.cpp Tue May 25 12:23:16 2010 +0300 @@ -21,6 +21,7 @@ #include "cfsmailplugin.h" #include "cmrcalendarinfoimpl.h" +#include "emailextensionuids.hrh" #include "cfsmailbox.h" #include "cfsmailrequestobserver.h" @@ -844,8 +845,20 @@ // exists. It is released in desctrucor if( aExtension->Uid() != KMailboxExtMrCalInfo ) { - // no specialized behaviour, call base class - CExtendableEmail::ReleaseExtension( aExtension ); + if( aExtension->Uid() == KEmailSettingExtensionUid ) + { + // check that plugin supports requested extension. + if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) ) + { + // remove extension from plugin + plugin->ReleaseExtension(aExtension); + } + } + else + { + // no specialized behaviour, call base class + CExtendableEmail::ReleaseExtension( aExtension ); + } } else { @@ -874,7 +887,8 @@ CleanupStack::Pop(); // calInfo } } - else if ( aInterfaceUid == KEmailMailboxStateExtensionUid ) + else if ( aInterfaceUid == KEmailMailboxStateExtensionUid || + aInterfaceUid == KEmailSettingExtensionUid ) { if ( !extension ) {