25 lines
598 B
C++
25 lines
598 B
C++
// LimitedStreams.cpp
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "LimitedStreams.h"
|
|
#include "../../Common/Defs.h"
|
|
|
|
STDMETHODIMP CLimitedSequentialInStream::Read(void *data, UInt32 size, UInt32 *processedSize)
|
|
{
|
|
UInt32 realProcessedSize = 0;
|
|
UInt32 sizeToRead = (UInt32)MyMin((_size - _pos), (UInt64)size);
|
|
HRESULT result = S_OK;
|
|
if (sizeToRead > 0)
|
|
{
|
|
result = _stream->Read(data, sizeToRead, &realProcessedSize);
|
|
_pos += realProcessedSize;
|
|
if (realProcessedSize == 0)
|
|
_wasFinished = true;
|
|
}
|
|
if(processedSize != NULL)
|
|
*processedSize = realProcessedSize;
|
|
return result;
|
|
}
|
|
|