diff -r 0dae4436159f -r 67f2119dc623 installationservices/swi/source/sisfile/siscompressed.cpp --- a/installationservices/swi/source/sisfile/siscompressed.cpp Mon Jul 26 18:52:42 2010 +0300 +++ b/installationservices/swi/source/sisfile/siscompressed.cpp Fri Aug 06 10:59:22 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of the License "Eclipse Public License v1.0" @@ -53,12 +53,21 @@ void CCompressed::ConstructL(TInt64& aBytesRead, TReadTypeBehaviour aTypeReadBehaviour) { CField::ConstructL(iDataProvider, EFieldTypeCompressed, aBytesRead, aTypeReadBehaviour); + // Get the current offset User::LeaveIfError(iDataProvider.Seek(ESeekCurrent, iOffset)); + TInt64 fieldOffset = 0; + +#ifdef SIS_CRC_CHECK_ENABLED // Calculate CRC of header and field data - TInt64 fieldOffset = iOffset - HeaderSize(); + fieldOffset = iOffset - HeaderSize(); User::LeaveIfError(iDataProvider.Seek(ESeekStart, fieldOffset)); CField::CalculateCrcL(iDataProvider, HeaderSize() + Length() + PaddingSize(), iCrc ); +#else + fieldOffset = iOffset + Length() + PaddingSize(); + User::LeaveIfError(iDataProvider.Seek(ESeekStart, fieldOffset)); +#endif + aBytesRead += Length() + PaddingSize(); }