traceservices/tracefw/ulogger/src/uloggerserver/uloggerserver.cpp
branchRCL_3
changeset 25 047f208ea78f
parent 24 cc28652e0254
--- a/traceservices/tracefw/ulogger/src/uloggerserver/uloggerserver.cpp	Wed Sep 01 12:39:58 2010 +0100
+++ b/traceservices/tracefw/ulogger/src/uloggerserver/uloggerserver.cpp	Wed Sep 15 00:35:00 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -33,6 +33,18 @@
 namespace Ulogger {
 
 
+void CleanupPointerArray( TAny* aArray )
+    {
+    static_cast< RPointerArray< TPluginConfiguration >* >( aArray )->ResetAndDestroy();
+    static_cast< RPointerArray< TPluginConfiguration >* >( aArray )->Close();
+    }
+
+void CleanupResetAndDestroyPushL( RPointerArray< TPluginConfiguration >& aArray )
+    {
+    TCleanupItem item( CleanupPointerArray, &aArray );
+    CleanupStack::PushL( item );
+    }
+
 /*Default constructor*/
 CULoggerServer::CULoggerServer(TInt aPriority)
 : CServer2( aPriority )
@@ -1148,20 +1160,23 @@
 		}
 	}
 
-
 void CULoggerServer::InitializeFrameworksL()
 	{
 	//<create plugin allocator (plugins)>
 	//output settings
 	RBuf8 outPluginName;
 	outPluginName.Create(KMaxPluginName);
+	outPluginName.CleanupClosePushL();
 	RPointerArray<TPluginConfiguration> outputPluginSettings;
+	CleanupResetAndDestroyPushL(outputPluginSettings);
 	GetPluginAndSettingsL(outPluginName, &outputPluginSettings, EOutputPluginFilter);
 
 	//control settings
 	RBuf8 inputPluginName;
 	inputPluginName.Create(KMaxPluginName);
+	inputPluginName.CleanupClosePushL();
 	RPointerArray<TPluginConfiguration> inputPluginSettings;
+	CleanupResetAndDestroyPushL(inputPluginSettings);
 	this->GetPluginAndSettingsL(inputPluginName, &inputPluginSettings, EInputPluginFilter);
 
 	#if defined(__LIGHTLOGGER_ENABLED) && defined(__VERBOSE_MODE)
@@ -1184,14 +1199,8 @@
 		iInputFramework = CInputFramework::NewL(iPluginAllocator->GetInputPlugin(), inputPluginSettings, this);
 
 	//cleanup
-	outPluginName.Close();
-	outputPluginSettings.ResetAndDestroy();
-	outputPluginSettings.Close();
-	inputPluginName.Close();
-	inputPluginSettings.ResetAndDestroy();
-	inputPluginSettings.Close();
-
-	iDataWatcher = CULoggerWatcher::NewL();	
+	CleanupStack::PopAndDestroy(4,&outPluginName);
+	iDataWatcher = CULoggerWatcher::NewL();
 	}