Handle the situation where QTemporaryFile::open() fails

If open() fails then we should make sure we do not try to write to it
and just return 0 in that case.

Change-Id: I2980b65766b322efed6708fb10cc27567174dc37
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
bb10
Andy Shaw 2019-03-04 10:32:08 +01:00
parent 7789b77458
commit 28d0b987b7
1 changed files with 13 additions and 9 deletions

View File

@ -912,16 +912,20 @@ QTemporaryFile *QTemporaryFile::createNativeFile(QFile &file)
file.open(QIODevice::ReadOnly);
//dump data
QTemporaryFile *ret = new QTemporaryFile;
ret->open();
file.seek(0);
char buffer[1024];
while(true) {
qint64 len = file.read(buffer, 1024);
if(len < 1)
break;
ret->write(buffer, len);
if (ret->open()) {
file.seek(0);
char buffer[1024];
while (true) {
qint64 len = file.read(buffer, 1024);
if (len < 1)
break;
ret->write(buffer, len);
}
ret->seek(0);
} else {
delete ret;
ret = nullptr;
}
ret->seek(0);
//restore
if(wasOpen)
file.seek(old_off);