SafeWriter optimization

This commit is contained in:
tildearrow 2024-02-25 00:09:21 -05:00
parent 5f4a1ed520
commit 22445065ed

View file

@ -18,6 +18,7 @@
*/ */
#include "safeWriter.h" #include "safeWriter.h"
#include "../ta-log.h"
#define WRITER_BUF_SIZE 16384 #define WRITER_BUF_SIZE 16384
@ -27,11 +28,18 @@ unsigned char* SafeWriter::getFinalBuf() {
void SafeWriter::checkSize(size_t amount) { void SafeWriter::checkSize(size_t amount) {
while ((curSeek+amount)>=bufLen) { while ((curSeek+amount)>=bufLen) {
unsigned char* newBuf=new unsigned char[bufLen+WRITER_BUF_SIZE]; size_t newSize=WRITER_BUF_SIZE*(1+((curSeek+amount)/WRITER_BUF_SIZE));
if (newSize<(bufLen+WRITER_BUF_SIZE)) {
logE("REPORT NOW: newSize is too small! case 1... %d<%d",(int)newSize,(int)(bufLen+WRITER_BUF_SIZE));
}
if (newSize<(curSeek+amount)) {
logE("REPORT NOW: newSize is too small! case 2... %d<%d",(int)newSize,(int)(curSeek+amount));
}
unsigned char* newBuf=new unsigned char[newSize];
memcpy(newBuf,buf,bufLen); memcpy(newBuf,buf,bufLen);
delete[] buf; delete[] buf;
buf=newBuf; buf=newBuf;
bufLen+=WRITER_BUF_SIZE; bufLen=newSize;
} }
} }