diff options
Diffstat (limited to 'CPP/7zip/Archive/7z/7zFolderInStream.cpp')
-rwxr-xr-x | CPP/7zip/Archive/7z/7zFolderInStream.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/CPP/7zip/Archive/7z/7zFolderInStream.cpp b/CPP/7zip/Archive/7z/7zFolderInStream.cpp index fb1cfd3a..f60a7177 100755 --- a/CPP/7zip/Archive/7z/7zFolderInStream.cpp +++ b/CPP/7zip/Archive/7z/7zFolderInStream.cpp @@ -113,13 +113,14 @@ STDMETHODIMP CFolderInStream::Read(void *data, UInt32 size, UInt32 *processedSiz STDMETHODIMP CFolderInStream::GetSubStreamSize(UInt64 subStream, UInt64 *value) { *value = 0; - if (subStream < Sizes.Size()) + int subStreamIndex = (int)subStream; + if (subStreamIndex < 0 || subStream > Sizes.Size()) + return E_FAIL; + if (subStreamIndex < Sizes.Size()) { - *value= Sizes[(int)(size_t)subStream]; + *value= Sizes[subStreamIndex]; return S_OK; } - if (subStream > Sizes.Size()) - return E_FAIL; if (!_currentSizeIsDefined) return S_FALSE; *value = _currentSize; |