diff -r a1caeb42b3a3 -r fcdfafb36fe7 uifw/AvKon/src/AknAdaptiveSearchGrid.cpp --- a/uifw/AvKon/src/AknAdaptiveSearchGrid.cpp Thu Jul 15 18:56:19 2010 +0300 +++ b/uifw/AvKon/src/AknAdaptiveSearchGrid.cpp Thu Aug 19 10:11:06 2010 +0300 @@ -1241,7 +1241,12 @@ } } _AKNTRACE_FUNC_EXIT; - } + } + +static CAknButton* GetButtonHelper( RPointerArray &aButtonArray, TInt aIndex ) + { + return ( aIndex < aButtonArray.Count() && aIndex >= 0 ) ? aButtonArray[aIndex] : NULL; + } // ----------------------------------------------------------------------------- // CAknAdaptiveSearchGrid::UpdateVisibleButtonsL() @@ -1274,8 +1279,11 @@ CAknButton* tmpButton = NULL; for( TInt i = 0; i < iButtonArray.Count(); i++ ) { - tmpButton = static_cast( iButtonArray[i] ); - tmpButton->MakeVisible( EFalse ); + tmpButton = GetButtonHelper( iButtonArray, i ); + if ( NULL != tmpButton ) + { + tmpButton->MakeVisible( EFalse ); + } } TInt tempTotalGridButtons = iTotalGridButtons - KCloseAndClearButtonCount; @@ -1283,7 +1291,12 @@ { for ( TInt i = 0; i < tempTotalGridButtons; i++ ) { - button = static_cast( iButtonArray[tempTotalGridButtons-i-1] ); + button = GetButtonHelper( iButtonArray, tempTotalGridButtons-i-1 ); + if ( NULL == button ) + { + continue; + } + TInt charPosition = numOfChars-i-1-shift_Ind; if ( charPosition >= 0 ) { @@ -1299,7 +1312,7 @@ button->SetIconSize( iButtonIconSize ); } else - { + { if( bState->Icon() ) { bState->SetIcon( NULL ); @@ -1356,8 +1369,13 @@ TInt offset = tempTotalGridButtons - charsOnLastPage; for ( TInt i = tempTotalGridButtons-1 ; i >= 0 ; --i ) - { - button = static_cast(iButtonArray[i+shift_Ind]); + { + button = GetButtonHelper( iButtonArray, i+shift_Ind ); + if ( NULL == button ) + { + continue; + } + if( i < offset ) { button->MakeVisible( EFalse ); @@ -1414,8 +1432,13 @@ for ( TInt i = 0; i < numOfChars; i++ ) { if ( ( i >= start) && (i < end) ) - { - button = static_cast(iButtonArray[i-start-shift_Ind]); + { + button = GetButtonHelper( iButtonArray, i-start-shift_Ind ); + if ( NULL == button ) + { + continue; + } + bState = button->State(); if( ptr.Mid(i, 1) == KSpaceCharacter ) { @@ -1468,8 +1491,12 @@ } for ( TInt i = tempTotalGridButtons; i < tempTotalGridButtons+iNumOfCols; i++ ) { - button = static_cast(iButtonArray[i]); - button->MakeVisible( EFalse ); + button = GetButtonHelper( iButtonArray, i ); + if ( NULL != button ) + { + button->MakeVisible( EFalse ); + } + } } }