diff options
author | Igor Pavlov <ipavlov@users.sourceforge.net> | 2016-05-20 03:00:00 +0300 |
---|---|---|
committer | Kornel LesiĆski <kornel@geekhood.net> | 2016-05-28 02:16:59 +0300 |
commit | bec3b479dcae1345a466ebe923989b0bd56fd5b6 (patch) | |
tree | 048b53858db838682f169140ba9887fdf819ab2e /CPP/7zip/Archive/Iso | |
parent | 66ac98bb02ac0fadd2a0e3266ea39279984580a3 (diff) |
16.0116.01
Diffstat (limited to 'CPP/7zip/Archive/Iso')
-rw-r--r-- | CPP/7zip/Archive/Iso/IsoHandler.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/CPP/7zip/Archive/Iso/IsoHandler.cpp b/CPP/7zip/Archive/Iso/IsoHandler.cpp index 91bf1a25..14aec498 100644 --- a/CPP/7zip/Archive/Iso/IsoHandler.cpp +++ b/CPP/7zip/Archive/Iso/IsoHandler.cpp @@ -358,7 +358,7 @@ STDMETHODIMP CHandler::GetStream(UInt32 index, ISequentialInStream **stream) UInt64 blockIndex; UInt64 currentItemSize; - if (index < (UInt32)_archive.Refs.Size()) + if (index < _archive.Refs.Size()) { const CRef &ref = _archive.Refs[index]; const CDir &item = ref.Dir->_subItems[ref.Index]; @@ -375,14 +375,14 @@ STDMETHODIMP CHandler::GetStream(UInt32 index, ISequentialInStream **stream) UInt64 virtOffset = 0; for (UInt32 i = 0; i < ref.NumExtents; i++) { - const CDir &item = ref.Dir->_subItems[ref.Index + i]; - if (item.Size == 0) + const CDir &item2 = ref.Dir->_subItems[ref.Index + i]; + if (item2.Size == 0) continue; CSeekExtent se; - se.Phy = (UInt64)item.ExtentLocation * kBlockSize; + se.Phy = (UInt64)item2.ExtentLocation * kBlockSize; se.Virt = virtOffset; extentStreamSpec->Extents.Add(se); - virtOffset += item.Size; + virtOffset += item2.Size; } if (virtOffset != ref.TotalSize) return S_FALSE; @@ -394,6 +394,7 @@ STDMETHODIMP CHandler::GetStream(UInt32 index, ISequentialInStream **stream) *stream = extentStream.Detach(); return S_OK; } + currentItemSize = item.Size; blockIndex = item.ExtentLocation; } |