EVENTRECORDER: Use a dynamic array for buffer in PlaybackFile

It is allocated on the stack.
This commit is contained in:
Orgad Shaneh 2021-07-08 11:45:54 +03:00 committed by Martin Gerhardy
parent 7e42ae4eec
commit c9a19011bf
2 changed files with 10 additions and 7 deletions

View File

@ -34,7 +34,10 @@
namespace Common { namespace Common {
PlaybackFile::PlaybackFile() : _tmpRecordFile(_tmpBuffer, kRecordBuffSize), _tmpPlaybackFile(_tmpBuffer, kRecordBuffSize) { PlaybackFile::PlaybackFile()
: _tmpBuffer(kRecordBuffSize)
, _tmpRecordFile(_tmpBuffer.data(), kRecordBuffSize)
, _tmpPlaybackFile(_tmpBuffer.data(), kRecordBuffSize) {
_readStream = NULL; _readStream = NULL;
_writeStream = NULL; _writeStream = NULL;
_screenshotsFile = NULL; _screenshotsFile = NULL;
@ -44,7 +47,7 @@ PlaybackFile::PlaybackFile() : _tmpRecordFile(_tmpBuffer, kRecordBuffSize), _tmp
_headerDumped = false; _headerDumped = false;
_recordCount = 0; _recordCount = 0;
_eventsSize = 0; _eventsSize = 0;
memset(_tmpBuffer, 1, kRecordBuffSize); memset(_tmpBuffer.data(), 1, kRecordBuffSize);
_playbackParseState = kFileStateCheckFormat; _playbackParseState = kFileStateCheckFormat;
} }
@ -400,7 +403,7 @@ void PlaybackFile::readEvent(RecorderEvent& event) {
} }
void PlaybackFile::readEventsToBuffer(uint32 size) { void PlaybackFile::readEventsToBuffer(uint32 size) {
_readStream->read(_tmpBuffer, size); _readStream->read(_tmpBuffer.data(), size);
_tmpPlaybackFile.seek(0); _tmpPlaybackFile.seek(0);
_eventsSize = size; _eventsSize = size;
} }
@ -423,7 +426,7 @@ void PlaybackFile::dumpRecordsToFile() {
} }
_writeStream->writeUint32LE(kEventTag); _writeStream->writeUint32LE(kEventTag);
_writeStream->writeUint32LE(_tmpRecordFile.pos()); _writeStream->writeUint32LE(_tmpRecordFile.pos());
_writeStream->write(_tmpBuffer, _tmpRecordFile.pos()); _writeStream->write(_tmpBuffer.data(), _tmpRecordFile.pos());
_tmpRecordFile.seek(0); _tmpRecordFile.seek(0);
_recordCount = 0; _recordCount = 0;
} }
@ -644,8 +647,8 @@ void PlaybackFile::updateHeader() {
dumpHeaderToFile(); dumpHeaderToFile();
uint32 readedSize = 0; uint32 readedSize = 0;
do { do {
readedSize = _readStream->read(_tmpBuffer, kRecordBuffSize); readedSize = _readStream->read(_tmpBuffer.data(), kRecordBuffSize);
_writeStream->write(_tmpBuffer, readedSize); _writeStream->write(_tmpBuffer.data(), readedSize);
} while (readedSize != 0); } while (readedSize != 0);
delete _writeStream; delete _writeStream;
_writeStream = NULL; _writeStream = NULL;

View File

@ -139,6 +139,7 @@ public:
void updateHeader(); void updateHeader();
void addSaveFile(const String &fileName, InSaveFile *saveStream); void addSaveFile(const String &fileName, InSaveFile *saveStream);
private: private:
Array<byte> _tmpBuffer;
WriteStream *_recordFile; WriteStream *_recordFile;
WriteStream *_writeStream; WriteStream *_writeStream;
WriteStream *_screenshotsFile; WriteStream *_screenshotsFile;
@ -150,7 +151,6 @@ private:
bool _headerDumped; bool _headerDumped;
int _recordCount; int _recordCount;
uint32 _eventsSize; uint32 _eventsSize;
byte _tmpBuffer[kRecordBuffSize];
PlaybackFileHeader _header; PlaybackFileHeader _header;
PlaybackFileState _playbackParseState; PlaybackFileState _playbackParseState;