mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-07 05:15:01 -06:00
4.54 beta
This commit is contained in:
committed by
Kornel Lesiński
parent
051769bbc5
commit
b82f80647d
@@ -607,7 +607,9 @@ void CInArchive::ReadStreamsInfo(
|
||||
for (;;)
|
||||
{
|
||||
UInt64 type = ReadID();
|
||||
switch(type)
|
||||
if (type > ((UInt32)1 << 30))
|
||||
ThrowIncorrect();
|
||||
switch((UInt32)type)
|
||||
{
|
||||
case NID::kEnd:
|
||||
return;
|
||||
@@ -627,6 +629,8 @@ void CInArchive::ReadStreamsInfo(
|
||||
unPackSizes, digestsDefined, digests);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
ThrowIncorrect();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -664,7 +668,7 @@ void CInArchive::ReadBoolVector2(int numItems, CBoolVector &v)
|
||||
}
|
||||
|
||||
void CInArchive::ReadTime(const CObjectVector<CByteBuffer> &dataVector,
|
||||
CObjectVector<CFileItem> &files, UInt64 type)
|
||||
CObjectVector<CFileItem> &files, UInt32 type)
|
||||
{
|
||||
CBoolVector boolVector;
|
||||
ReadBoolVector2(files.Size(), boolVector);
|
||||
@@ -881,8 +885,10 @@ HRESULT CInArchive::ReadHeader(
|
||||
if (type == NID::kEnd)
|
||||
break;
|
||||
UInt64 size = ReadNumber();
|
||||
database.ArchiveInfo.FileInfoPopIDs.Add(type);
|
||||
switch(type)
|
||||
bool isKnownType = true;
|
||||
if (type > ((UInt32)1 << 30))
|
||||
isKnownType = false;
|
||||
else switch((UInt32)type)
|
||||
{
|
||||
case NID::kName:
|
||||
{
|
||||
@@ -951,15 +957,16 @@ HRESULT CInArchive::ReadHeader(
|
||||
case NID::kLastWriteTime:
|
||||
case NID::kLastAccessTime:
|
||||
{
|
||||
ReadTime(dataVector, database.Files, type);
|
||||
ReadTime(dataVector, database.Files, (UInt32)type);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
database.ArchiveInfo.FileInfoPopIDs.DeleteBack();
|
||||
SkeepData(size);
|
||||
}
|
||||
isKnownType = false;
|
||||
}
|
||||
if (isKnownType)
|
||||
database.ArchiveInfo.FileInfoPopIDs.Add(type);
|
||||
else
|
||||
SkeepData(size);
|
||||
}
|
||||
|
||||
CNum emptyFileIndex = 0;
|
||||
|
||||
@@ -194,7 +194,7 @@ private:
|
||||
void ReadBoolVector(int numItems, CBoolVector &v);
|
||||
void ReadBoolVector2(int numItems, CBoolVector &v);
|
||||
void ReadTime(const CObjectVector<CByteBuffer> &dataVector,
|
||||
CObjectVector<CFileItem> &files, UInt64 type);
|
||||
CObjectVector<CFileItem> &files, UInt32 type);
|
||||
HRESULT ReadAndDecodePackedStreams(
|
||||
DECL_EXTERNAL_CODECS_LOC_VARS
|
||||
UInt64 baseOffset, UInt64 &dataOffset,
|
||||
|
||||
@@ -104,7 +104,7 @@ STDMETHODIMP CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value)
|
||||
prop = (UInt32)numBlocks;
|
||||
break;
|
||||
}
|
||||
case kpidNumVolumes: prop = (UInt32)(_archives.Size() - 1);
|
||||
case kpidNumVolumes: prop = (UInt32)_archives.Size();
|
||||
|
||||
// case kpidCommented: prop = _archiveInfo.IsCommented(); break;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/ Tar/Handler.cpp
|
||||
// Tar/Handler.cpp
|
||||
|
||||
#include "StdAfx.h"
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@ HRESULT CInArchive::GetNextItem(bool &filled, CItemEx &item)
|
||||
item.LongLinkSize = item.HeaderPosition - headerPosition;
|
||||
item.HeaderPosition = headerPosition;
|
||||
}
|
||||
else if (item.LinkFlag == 'g' || item.LinkFlag == 'x')
|
||||
else if (item.LinkFlag == 'g' || item.LinkFlag == 'x' || item.LinkFlag == 'X')
|
||||
{
|
||||
// pax Extended Header
|
||||
return S_OK;
|
||||
|
||||
Reference in New Issue
Block a user