Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pavlov <ipavlov@users.sourceforge.net>2016-10-05 03:00:00 +0300
committerKornel Lesiński <kornel@geekhood.net>2016-12-08 15:13:50 +0300
commit603abd5528c97346e9448c0ff47949f818fe558c (patch)
tree6603230f4eab118fc83554731dc86e30578ccff9
parent232ce7957441b06193c4cbdc1bc9e71436fadfdb (diff)
16.0416.04
-rw-r--r--C/7zVersion.h8
-rw-r--r--C/DllSecur.c4
-rw-r--r--CPP/7zip/Archive/Rar/Rar5Handler.cpp19
-rw-r--r--CPP/7zip/Archive/Rar/Rar5Handler.h4
-rw-r--r--CPP/7zip/Compress/Rar2Decoder.cpp14
-rw-r--r--CPP/7zip/Compress/Rar2Decoder.h21
-rw-r--r--DOC/7zip.inf4
-rw-r--r--DOC/7zip.nsi2
-rw-r--r--DOC/7zip.wxs2
-rw-r--r--DOC/readme.txt2
10 files changed, 55 insertions, 25 deletions
diff --git a/C/7zVersion.h b/C/7zVersion.h
index 565878d4..4f15081d 100644
--- a/C/7zVersion.h
+++ b/C/7zVersion.h
@@ -1,9 +1,9 @@
#define MY_VER_MAJOR 16
-#define MY_VER_MINOR 03
+#define MY_VER_MINOR 04
#define MY_VER_BUILD 0
-#define MY_VERSION_NUMBERS "16.03"
-#define MY_VERSION "16.03"
-#define MY_DATE "2016-09-28"
+#define MY_VERSION_NUMBERS "16.04"
+#define MY_VERSION "16.04"
+#define MY_DATE "2016-10-04"
#undef MY_COPYRIGHT
#undef MY_VERSION_COPYRIGHT_DATE
#define MY_AUTHOR_NAME "Igor Pavlov"
diff --git a/C/DllSecur.c b/C/DllSecur.c
index 5cf63999..90352ce1 100644
--- a/C/DllSecur.c
+++ b/C/DllSecur.c
@@ -1,5 +1,5 @@
/* DllSecur.c -- DLL loading security
-2016-09-15 : Igor Pavlov : Public domain */
+2016-10-04 : Igor Pavlov : Public domain */
#include "Precomp.h"
@@ -42,7 +42,7 @@ void LoadSecurityDlls()
// at Vista (ver 6.0) : CoCreateInstance(CLSID_ShellLink, ...) doesn't work after SetDefaultDllDirectories() : Check it ???
OSVERSIONINFO vi;
vi.dwOSVersionInfoSize = sizeof(vi);
- if (!GetVersionEx(&vi) || vi.dwMajorVersion != 6 || vi.dwMajorVersion != 0)
+ if (!GetVersionEx(&vi) || vi.dwMajorVersion != 6 || vi.dwMinorVersion != 0)
{
Func_SetDefaultDllDirectories setDllDirs = (Func_SetDefaultDllDirectories)
GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "SetDefaultDllDirectories");
diff --git a/CPP/7zip/Archive/Rar/Rar5Handler.cpp b/CPP/7zip/Archive/Rar/Rar5Handler.cpp
index 4fb63505..d70a5686 100644
--- a/CPP/7zip/Archive/Rar/Rar5Handler.cpp
+++ b/CPP/7zip/Archive/Rar/Rar5Handler.cpp
@@ -231,6 +231,18 @@ bool CItem::Is_CopyLink() const
return FindExtra_Link(link) && link.Type == NLinkType::kFileCopy;
}
+bool CItem::Is_HardLink() const
+{
+ CLinkInfo link;
+ return FindExtra_Link(link) && link.Type == NLinkType::kHardLink;
+}
+
+bool CItem::Is_CopyLink_or_HardLink() const
+{
+ CLinkInfo link;
+ return FindExtra_Link(link) && (link.Type == NLinkType::kFileCopy || link.Type == NLinkType::kHardLink);
+}
+
void CItem::Link_to_Prop(unsigned linkType, NWindows::NCOM::CPropVariant &prop) const
{
CLinkInfo link;
@@ -2587,7 +2599,7 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
{
if (testMode)
{
- if (item->Is_CopyLink() && item->PackSize == 0)
+ if (item->NeedUse_as_CopyLink_or_HardLink())
{
RINOK(extractCallback->PrepareOperation(askMode));
RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kOK));
@@ -2599,6 +2611,9 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
if (item->IsService())
continue;
+ if (item->NeedUse_as_HardLink())
+ continue;
+
bool needDecode = false;
for (unsigned n = i + 1; n < _refs.Size(); n++)
@@ -2639,7 +2654,7 @@ STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
continue;
}
- if (item->Is_CopyLink() && item->PackSize == 0)
+ if (item->NeedUse_as_CopyLink())
{
RINOK(extractCallback->SetOperationResult(
realOutStream ?
diff --git a/CPP/7zip/Archive/Rar/Rar5Handler.h b/CPP/7zip/Archive/Rar/Rar5Handler.h
index cf741c7c..27e937de 100644
--- a/CPP/7zip/Archive/Rar/Rar5Handler.h
+++ b/CPP/7zip/Archive/Rar/Rar5Handler.h
@@ -262,8 +262,12 @@ struct CItem
bool FindExtra_Link(CLinkInfo &link) const;
void Link_to_Prop(unsigned linkType, NWindows::NCOM::CPropVariant &prop) const;
bool Is_CopyLink() const;
+ bool Is_HardLink() const;
+ bool Is_CopyLink_or_HardLink() const;
bool NeedUse_as_CopyLink() const { return PackSize == 0 && Is_CopyLink(); }
+ bool NeedUse_as_HardLink() const { return PackSize == 0 && Is_HardLink(); }
+ bool NeedUse_as_CopyLink_or_HardLink() const { return PackSize == 0 && Is_CopyLink_or_HardLink(); }
bool GetAltStreamName(AString &name) const;
diff --git a/CPP/7zip/Compress/Rar2Decoder.cpp b/CPP/7zip/Compress/Rar2Decoder.cpp
index b3f2b4b3..db67433a 100644
--- a/CPP/7zip/Compress/Rar2Decoder.cpp
+++ b/CPP/7zip/Compress/Rar2Decoder.cpp
@@ -80,7 +80,8 @@ static const UInt32 kHistorySize = 1 << 20;
static const UInt32 kWindowReservSize = (1 << 22) + 256;
CDecoder::CDecoder():
- m_IsSolid(false)
+ m_IsSolid(false),
+ m_TablesOK(false)
{
}
@@ -100,6 +101,8 @@ UInt32 CDecoder::ReadBits(unsigned numBits) { return m_InBitStream.ReadBits(numB
bool CDecoder::ReadTables(void)
{
+ m_TablesOK = false;
+
Byte levelLevels[kLevelTableSize];
Byte newLevels[kMaxTableSize];
m_AudioMode = (ReadBits(1) == 1);
@@ -170,6 +173,9 @@ bool CDecoder::ReadTables(void)
}
memcpy(m_LastLevels, newLevels, kMaxTableSize);
+
+ m_TablesOK = true;
+
return true;
}
@@ -340,10 +346,12 @@ HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *
return S_FALSE;
return S_OK;
}
- if (!ReadTables())
- return S_FALSE;
+ ReadTables();
}
+ if (!m_TablesOK)
+ return S_FALSE;
+
UInt64 startPos = m_OutWindowStream.GetProcessedSize();
while (pos < unPackSize)
{
diff --git a/CPP/7zip/Compress/Rar2Decoder.h b/CPP/7zip/Compress/Rar2Decoder.h
index 3a0535cc..0d8142b5 100644
--- a/CPP/7zip/Compress/Rar2Decoder.h
+++ b/CPP/7zip/Compress/Rar2Decoder.h
@@ -119,26 +119,29 @@ class CDecoder :
{
CLzOutWindow m_OutWindowStream;
CBitDecoder m_InBitStream;
+
+ UInt32 m_RepDistPtr;
+ UInt32 m_RepDists[kNumRepDists];
+
+ UInt32 m_LastLength;
+
+ bool m_IsSolid;
+ bool m_TablesOK;
+ bool m_AudioMode;
+
NHuffman::CDecoder<kNumHuffmanBits, kMainTableSize> m_MainDecoder;
NHuffman::CDecoder<kNumHuffmanBits, kDistTableSize> m_DistDecoder;
NHuffman::CDecoder<kNumHuffmanBits, kLenTableSize> m_LenDecoder;
NHuffman::CDecoder<kNumHuffmanBits, kMMTableSize> m_MMDecoders[NMultimedia::kNumChanelsMax];
NHuffman::CDecoder<kNumHuffmanBits, kLevelTableSize> m_LevelDecoder;
- bool m_AudioMode;
+ UInt64 m_PackSize;
- NMultimedia::CFilter2 m_MmFilter;
unsigned m_NumChannels;
+ NMultimedia::CFilter2 m_MmFilter;
- UInt32 m_RepDists[kNumRepDists];
- UInt32 m_RepDistPtr;
-
- UInt32 m_LastLength;
-
Byte m_LastLevels[kMaxTableSize];
- UInt64 m_PackSize;
- bool m_IsSolid;
void InitStructures();
UInt32 ReadBits(unsigned numBits);
diff --git a/DOC/7zip.inf b/DOC/7zip.inf
index a88badf8..b8aa402e 100644
--- a/DOC/7zip.inf
+++ b/DOC/7zip.inf
@@ -10,8 +10,8 @@ AppName = "7-Zip"
InstallDir = %CE1%\%AppName%
[Strings]
-AppVer = "16.03"
-AppDate = "2016-10-28"
+AppVer = "16.04"
+AppDate = "2016-10-04"
[CEDevice]
; ProcessorType = 2577 ; ARM
diff --git a/DOC/7zip.nsi b/DOC/7zip.nsi
index 3df1c20c..abaa4c2e 100644
--- a/DOC/7zip.nsi
+++ b/DOC/7zip.nsi
@@ -2,7 +2,7 @@
;Defines
!define VERSION_MAJOR 16
-!define VERSION_MINOR 03
+!define VERSION_MINOR 04
!define VERSION_POSTFIX_FULL ""
!ifdef WIN64
!ifdef IA64
diff --git a/DOC/7zip.wxs b/DOC/7zip.wxs
index a84bef23..d26e2a85 100644
--- a/DOC/7zip.wxs
+++ b/DOC/7zip.wxs
@@ -1,7 +1,7 @@
<?xml version="1.0"?>
<?define VerMajor = "16" ?>
-<?define VerMinor = "03" ?>
+<?define VerMinor = "04" ?>
<?define VerBuild = "00" ?>
<?define MmVer = "$(var.VerMajor).$(var.VerMinor)" ?>
<?define MmHex = "$(var.VerMajor)$(var.VerMinor)" ?>
diff --git a/DOC/readme.txt b/DOC/readme.txt
index 4a6998c1..3d7b8d1d 100644
--- a/DOC/readme.txt
+++ b/DOC/readme.txt
@@ -1,4 +1,4 @@
-7-Zip 16.02 Sources
+7-Zip 16.04 Sources
-------------------
7-Zip is a file archiver for Windows.