Tue, 06 Jan 2015 21:39:09 +0100
Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.
1 // LimitedStreams.cpp
3 #include "StdAfx.h"
5 #include "LimitedStreams.h"
6 #include "../../Common/Defs.h"
8 void CLimitedSequentialInStream::Init(ISequentialInStream *stream, UInt64 streamSize)
9 {
10 _stream = stream;
11 _size = streamSize;
12 }
14 STDMETHODIMP CLimitedSequentialInStream::Read(void *data, UInt32 size, UInt32 *processedSize)
15 {
16 UInt32 processedSizeReal;
17 UInt32 sizeToRead = UInt32(MyMin(_size, UInt64(size)));
18 HRESULT result = _stream->Read(data, sizeToRead, &processedSizeReal);
19 _size -= processedSizeReal;
20 if(processedSize != NULL)
21 *processedSize = processedSizeReal;
22 return result;
23 }