diff -r 2666d9724c76 -r d4f567ce2e7c phonebookui/Phonebook2/Commands/src/CPbk2CommandStore.cpp --- a/phonebookui/Phonebook2/Commands/src/CPbk2CommandStore.cpp Thu Jul 15 18:22:55 2010 +0300 +++ b/phonebookui/Phonebook2/Commands/src/CPbk2CommandStore.cpp Thu Aug 19 09:41:07 2010 +0300 @@ -18,6 +18,7 @@ // INCLUDE FILES #include "CPbk2CommandStore.h" +#include "MPbk2CommandResourceRelease.h" // Phonebook 2 #include @@ -222,11 +223,25 @@ MPbk2Command* arrayCmd = iCommandArray[j]; if (idleDestCmd == arrayCmd) { + iIdleDestructableCommands.Remove(i); + + // Try to get MPbk2ResourceRelease interface. + TUid uid; + uid.iUid = MPbk2ResourceReleaseUID; + MPbk2ResourceRelease* release = static_cast(idleDestCmd->CommandExtension(uid)); + if (release) + { + // Call ReleaseResource before delete. + release->ReleaseResource(); + } + // Remove from command array - iCommandArray.Remove(j); - iIdleDestructableCommands.Remove(i); + iCommandArray.Remove(j); + delete idleDestCmd; idleDestCmd = NULL; + + break; } } }