QPdf: do not switch to file-backed storage if we can't open it

In case creation of the QTemporaryFile fails, keep the data in memory.

Change-Id: I9933571259a26ee990609010763a1ef57877338a
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
bb10
Giuseppe D'Angelo 2024-03-22 17:31:00 +01:00
parent 90217f37ca
commit 7eb69e0f7a
1 changed files with 10 additions and 9 deletions

View File

@ -279,16 +279,17 @@ namespace QPdf {
&& size > maxMemorySize()) {
// Switch to file backing.
QTemporaryFile *newFile = new QTemporaryFile;
newFile->open();
dev->reset();
while (!dev->atEnd()) {
QByteArray buf = dev->read(chunkSize());
newFile->write(buf);
if (newFile->open()) {
dev->reset();
while (!dev->atEnd()) {
QByteArray buf = dev->read(chunkSize());
newFile->write(buf);
}
delete dev;
dev = newFile;
ba.clear();
fileBackingActive = true;
}
delete dev;
dev = newFile;
ba.clear();
fileBackingActive = true;
}
if (dev->pos() != size) {
dev->seek(size);