contentstorage/cahandler/app/src/cauninstalloperation.cpp
changeset 66 32469d7d46ff
parent 61 8e5041d13c84
--- a/contentstorage/cahandler/app/src/cauninstalloperation.cpp	Fri Apr 16 15:16:09 2010 +0300
+++ b/contentstorage/cahandler/app/src/cauninstalloperation.cpp	Mon May 03 12:48:45 2010 +0300
@@ -18,6 +18,7 @@
 #include <apgcli.h>
 #include <swi/sisregistrysession.h>
 #include <swi/sisregistryentry.h>
+
 #include "cautils.h"
 #include "cadef.h"
 #include "cainnerentry.h"
@@ -69,7 +70,6 @@
 //
 void CCaUninstallOperation::ConstructL(CCaInnerEntry &aEntry)
 {
-    TBuf<KCaMaxAttrValueLen> uidAttr;
     TUint uid = aEntry.GetUid();
 
     TUid packageUid = KNullUid;
@@ -112,11 +112,15 @@
     CleanupClosePushL(apaLsSession);
     User::LeaveIfError(apaLsSession.GetAllApps());
 
-    TApaAppInfo appInfo;
-    User::LeaveIfError(apaLsSession.GetAppInfo(appInfo, aAppUid));
-    if (!GetInstallPkgUidL(appInfo.iFullName, aPackageUid)) {
+    // TApaAppInfo size is greater then 1024 bytes
+    // so its instances should not be created on the stack.
+    TApaAppInfo* appInfo = new(ELeave) TApaAppInfo();
+    CleanupStack::PushL(appInfo);
+    User::LeaveIfError(apaLsSession.GetAppInfo(*appInfo, aAppUid));
+    if (!GetInstallPkgUidL(appInfo->iFullName, aPackageUid)) {
         aPackageUid = aAppUid;
     }
+    CleanupStack::PopAndDestroy(appInfo);
     aMimeType.Set(KAppMimeType);
 
     CleanupStack::PopAndDestroy(&apaLsSession);