diff options
author | Mauro Persano <mauro.persano@kdab.com> | 2017-01-10 15:09:39 -0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2017-01-20 12:52:43 +0000 |
commit | 3ea51e29842cb1149c4d4cccb7a94bd2a7287d8b (patch) | |
tree | a227dedff2377081c06645f93f1f913bd6063ef7 /src/render/texture/qtexture.cpp | |
parent | 4c66cbc2bc82f8db0b6d079f1ea48365aa5d5aeb (diff) |
Accept DDS files with extra data at the end
Task-number: QTBUG-57998
Change-Id: I84b3bb01452eddd493856cb01236f23baec76dc5
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/texture/qtexture.cpp')
-rw-r--r-- | src/render/texture/qtexture.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/render/texture/qtexture.cpp b/src/render/texture/qtexture.cpp index 4aa28aa1c..d9b70a2b8 100644 --- a/src/render/texture/qtexture.cpp +++ b/src/render/texture/qtexture.cpp @@ -592,11 +592,17 @@ QTextureImageDataPtr setDdsFile(const QString &source) layerSize = faces * tmpSize; // data - const QByteArray data = f.readAll(); - if (data.size() != layers * layerSize) { - qWarning() << "Unexpected data size (got " << data.size() << ", expecting" << layers * layerSize << ")"; + const int dataSize = layers * layerSize; + + const QByteArray data = f.read(dataSize); + if (data.size() < dataSize) { + qWarning() << "Unexpected end of data in" << source; return imageData; } + + if (!f.atEnd()) + qWarning() << "Unrecognized data in" << source; + imageData = QTextureImageDataPtr::create(); imageData->setData(data,blockSize, isCompressed); |