diff -r fa67e03b87df -r 6295dc2169f3 adaptationlayer/tsy/simatktsy_dll/src/satutil.cpp --- a/adaptationlayer/tsy/simatktsy_dll/src/satutil.cpp Wed Feb 17 13:58:55 2010 +0200 +++ b/adaptationlayer/tsy/simatktsy_dll/src/satutil.cpp Wed Apr 21 14:29:55 2010 +0300 @@ -1045,34 +1045,40 @@ aBerTlv.TlvByTagValue( &duration, KTlvDurationTag ) ); if ( KErrNotFound != returnValue ) { - TUint8 durationTimeUnit = duration.GetShortInfo( ETLV_TimeUnit ); - switch ( durationTimeUnit ) + // Check if Duration TLV has real data + if ( duration.GetLength() ) { - case KMinutes: - { - // Minutes - aTDuration.iTimeUnit = RSat::EMinutes; - break; - } - case KSeconds: + TUint8 durationTimeUnit( duration.GetShortInfo( ETLV_TimeUnit ) ); + switch ( durationTimeUnit ) { - // Seconds - aTDuration.iTimeUnit = RSat::ESeconds; - break; + case KMinutes: + { + // Minutes + aTDuration.iTimeUnit = RSat::EMinutes; + break; + } + case KSeconds: + { + // Seconds + aTDuration.iTimeUnit = RSat::ESeconds; + break; + } + case KTenthsOfSeconds: + { + // Tenths of seconds + aTDuration.iTimeUnit = RSat::ETenthsOfSeconds; + break; + } + default: + { + aTDuration.iTimeUnit = RSat::ETimeUnitNotSet; + break; + } } - case KTenthsOfSeconds: - { - // Tenths of seconds - aTDuration.iTimeUnit = RSat::ETenthsOfSeconds; - break; - } - default: - { - aTDuration.iTimeUnit = RSat::ETimeUnitNotSet; - } + // Time interval + aTDuration.iNumOfUnits = + duration.GetShortInfo( ETLV_TimeInteval ); } - // Time interval - aTDuration.iNumOfUnits = duration.GetShortInfo( ETLV_TimeInteval ); } }