summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Persano <mauro.persano@kdab.com>2017-01-10 15:09:39 -0200
committerSean Harmer <sean.harmer@kdab.com>2017-01-20 12:52:43 +0000
commit3ea51e29842cb1149c4d4cccb7a94bd2a7287d8b (patch)
treea227dedff2377081c06645f93f1f913bd6063ef7
parent4c66cbc2bc82f8db0b6d079f1ea48365aa5d5aeb (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>
-rw-r--r--src/render/texture/qtexture.cpp12
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);