--- a/kerneltest/e32test/resourceman/resourceman_psl/rescontrol_extended_psl.cpp Fri Aug 06 16:34:38 2010 +0100
+++ b/kerneltest/e32test/resourceman/resourceman_psl/rescontrol_extended_psl.cpp Thu Aug 12 11:55:14 2010 +0100
@@ -31,56 +31,65 @@
| |
ResourceF ResourceG
*/
-TInt DSimulatedPowerResourceController::DoRegisterStaticResourcesDependency(DStaticPowerResourceD**& aStaticResourceDArray, TUint16& aStaticResourceDCount)
+
+TInt DSimulatedPowerResourceController::DoRegisterStaticResourcesDependency(RPointerArray <DStaticPowerResourceD> & aStaticResourceDArray)
{
Kern::Printf(">DSimulatedPowerResourceController::DoRegisterStaticResourcesDependency");
- aStaticResourceDArray = (DStaticPowerResourceD**)new(DStaticPowerResourceD*[MAX_DEPENDENT_RESOURCE_COUNT]);
- if(!aStaticResourceDArray)
- return KErrNoMemory;
+
+ // this is just for testing purposes - try to call base-class implementation, which by default resets the values and returns KErrNone
+ TInt r = DPowerResourceController::DoRegisterStaticResourcesDependency(aStaticResourceDArray);
+ if(r != KErrNone || aStaticResourceDArray.Count())
+ {
+ Kern::Printf("DPowerResourceController::DoRegisterStaticResourcesDependency() default base class implementation has failed?");
+ return KErrGeneral;
+ }
+
DStaticPowerResourceD* pR = NULL;
+ TBool error_occured = EFalse;
+
pR = new DMLSLGLSPDependResource();
- if(!pR)
- CLEAN_AND_RETURN(iStaticResDependencyCount, aStaticResourceDArray, KErrNoMemory)
- aStaticResourceDArray[iStaticResDependencyCount++] = pR;
+ if(!SafeAppend(aStaticResourceDArray, pR))
+ error_occured = ETrue;
pR = new DMLSIGLSNDependResource();
- if(!pR)
- CLEAN_AND_RETURN(iStaticResDependencyCount, aStaticResourceDArray, KErrNoMemory)
- aStaticResourceDArray[iStaticResDependencyCount++] = pR;
-
+ if(!SafeAppend(aStaticResourceDArray, pR))
+ error_occured = ETrue;
+
pR = new DBSIGLSPDependResource();
- if(!pR)
- CLEAN_AND_RETURN(iStaticResDependencyCount, aStaticResourceDArray, KErrNoMemory)
- aStaticResourceDArray[iStaticResDependencyCount++] = pR;
-
+ if(!SafeAppend(aStaticResourceDArray, pR))
+ error_occured = ETrue;
+
pR = new DMLSHIGLSPDependResource();
- if(!pR)
- CLEAN_AND_RETURN(iStaticResDependencyCount, aStaticResourceDArray, KErrNoMemory)
- aStaticResourceDArray[iStaticResDependencyCount++] = pR;
+ if(!SafeAppend(aStaticResourceDArray, pR))
+ error_occured = ETrue;
pR = new DBSHLGLSNDependResource();
- if(!pR)
- CLEAN_AND_RETURN(iStaticResDependencyCount, aStaticResourceDArray, KErrNoMemory)
- aStaticResourceDArray[iStaticResDependencyCount++] = pR;
+ if(!SafeAppend(aStaticResourceDArray, pR))
+ error_occured = ETrue;
pR = new DMLSHLGLSNDependResource();
- if(!pR)
- CLEAN_AND_RETURN(iStaticResDependencyCount, aStaticResourceDArray, KErrNoMemory)
- aStaticResourceDArray[iStaticResDependencyCount++] = pR;
+ if(!SafeAppend(aStaticResourceDArray, pR))
+ error_occured = ETrue;
//Establish resource dependencies
- if(CreateResourceDependency(aStaticResourceDArray))
- CLEAN_AND_RETURN(iStaticResDependencyCount, aStaticResourceDArray, KErrNoMemory)
+ r = CreateResourceDependency(aStaticResourceDArray);
+ if(r != KErrNone)
+ error_occured = ETrue;
- iDependencyResources = aStaticResourceDArray;
+ // the only error that could occur here is KErrNoMemory (also from calling CreateResourceDependency)
+ // clean-up if the error did occur
+ if(error_occured)
+ {
+ aStaticResourceDArray.ResetAndDestroy();
+ r = KErrNoMemory;
+ }
- aStaticResourceDCount = iStaticResDependencyCount;
- return KErrNone;
+ return r;
}
// This function establishes above dependency between static dependent resource
-TInt DSimulatedPowerResourceController::CreateResourceDependency(DStaticPowerResourceD** pResArray)
+TInt DSimulatedPowerResourceController::CreateResourceDependency(RPointerArray <DStaticPowerResourceD> & pResArray)
{
iNodeArray = new SNode[10];
SNode* pN1;