diff -r 000000000000 -r 6474c204b198 other-licenses/7zstub/src/7zip/Common/LimitedStreams.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/other-licenses/7zstub/src/7zip/Common/LimitedStreams.cpp Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,24 @@ +// LimitedStreams.cpp + +#include "StdAfx.h" + +#include "LimitedStreams.h" +#include "../../Common/Defs.h" + +void CLimitedSequentialInStream::Init(ISequentialInStream *stream, UInt64 streamSize) +{ + _stream = stream; + _size = streamSize; +} + +STDMETHODIMP CLimitedSequentialInStream::Read(void *data, UInt32 size, UInt32 *processedSize) +{ + UInt32 processedSizeReal; + UInt32 sizeToRead = UInt32(MyMin(_size, UInt64(size))); + HRESULT result = _stream->Read(data, sizeToRead, &processedSizeReal); + _size -= processedSizeReal; + if(processedSize != NULL) + *processedSize = processedSizeReal; + return result; +} +