diff -r f72a12da539e -r 5315654608de idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp --- a/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp Thu Dec 17 08:40:49 2009 +0200 +++ b/idlehomescreen/xmluirendering/uiengine/src/xncontroladapterimpl.cpp Thu Jan 07 12:39:41 2010 +0200 @@ -3064,10 +3064,15 @@ CFbsBitmap* returnValue = NULL; CFbsBitmap* bitmapMask = NULL; + if ( !pathProperty ) + { + return NULL; + } + CXnDomList& propertyValueList = pathProperty->Property()->PropertyValueList(); TInt count = propertyValueList.Length(); - for ( TInt i = 0; i < propertyValueList.Length(); ++i ) + for ( TInt i = 0; i < count; ++i ) { CXnDomPropertyValue* value = static_cast< CXnDomPropertyValue* >( propertyValueList.Item( i ) ); @@ -3093,53 +3098,56 @@ } else if ( value->PrimitiveValueType() == CXnDomPropertyValue::EPercentage ) { - CXnDomPropertyValue* tmpValue = NULL; - tmpValue = value->CloneL(); - CXnProperty* tmpProperty = NULL; - CleanupStack::PushL( tmpValue ); - tmpProperty = CXnProperty::NewL( - KNullDesC8, - tmpValue, - aNode.UiEngine()->ODT()->DomDocument().StringPool() ); - CleanupStack::Pop( tmpValue ); - TSize imageSize = returnValue->SizeInPixels(); - CleanupStack::PushL( tmpProperty ); - TInt intValue = static_cast< TInt >( value->FloatValueL() ); - TInt dividerValue = 0; - - switch ( i ) + if ( returnValue ) { - case 1: + CXnDomPropertyValue* tmpValue = NULL; + tmpValue = value->CloneL(); + CXnProperty* tmpProperty = NULL; + CleanupStack::PushL( tmpValue ); + tmpProperty = CXnProperty::NewL( + KNullDesC8, + tmpValue, + aNode.UiEngine()->ODT()->DomDocument().StringPool() ); + CleanupStack::Pop( tmpValue ); + TSize imageSize = returnValue->SizeInPixels(); + CleanupStack::PushL( tmpProperty ); + TInt intValue = static_cast< TInt >( value->FloatValueL() ); + TInt dividerValue = 0; + + switch ( i ) { - dividerValue = aNode.UiEngine()->VerticalPixelValueL( - tmpProperty, imageSize.iHeight ); - aBorderBitmapDividerTop = dividerValue; - break; + case 1: + { + dividerValue = aNode.UiEngine()->VerticalPixelValueL( + tmpProperty, imageSize.iHeight ); + aBorderBitmapDividerTop = dividerValue; + break; + } + case 2: + { + dividerValue = aNode.UiEngine()->HorizontalPixelValueL( + tmpProperty, imageSize.iWidth ); + aBorderBitmapDividerRight = dividerValue; + break; + } + case 3: + { + dividerValue = aNode.UiEngine()->VerticalPixelValueL( + tmpProperty, imageSize.iHeight ); + aBorderBitmapDividerBottom = dividerValue; + break; + } + case 4: + { + dividerValue = aNode.UiEngine()->HorizontalPixelValueL( + tmpProperty, imageSize.iWidth ); + aBorderBitmapDividerLeft = dividerValue; + break; + } } - case 2: - { - dividerValue = aNode.UiEngine()->HorizontalPixelValueL( - tmpProperty, imageSize.iWidth ); - aBorderBitmapDividerRight = dividerValue; - break; - } - case 3: - { - dividerValue = aNode.UiEngine()->VerticalPixelValueL( - tmpProperty, imageSize.iHeight ); - aBorderBitmapDividerBottom = dividerValue; - break; - } - case 4: - { - dividerValue = aNode.UiEngine()->HorizontalPixelValueL( - tmpProperty, imageSize.iWidth ); - aBorderBitmapDividerLeft = dividerValue; - break; - } + + CleanupStack::PopAndDestroy( tmpProperty ); } - - CleanupStack::PopAndDestroy( tmpProperty ); } else if ( value->PrimitiveValueType() == CXnDomPropertyValue::EString || value->PrimitiveValueType() == CXnDomPropertyValue::EIdent )