diff options
Diffstat (limited to 'src/gui/image/qimagereader.cpp')
-rw-r--r-- | src/gui/image/qimagereader.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp index 8af36f911b..dbfcb4ee8c 100644 --- a/src/gui/image/qimagereader.cpp +++ b/src/gui/image/qimagereader.cpp @@ -1584,7 +1584,13 @@ QList<QByteArray> QImageReader::imageFormatsForMimeType(const QByteArray &mimeTy */ int QImageReader::allocationLimit() { - return QImageReaderPrivate::maxAlloc; + static int envLimit = []() { + bool ok = false; + int res = qEnvironmentVariableIntValue("QT_IMAGEIO_MAXALLOC", &ok); + return ok ? res : -1; + }(); + + return envLimit >= 0 ? envLimit : QImageReaderPrivate::maxAlloc; } /*! @@ -1592,11 +1598,16 @@ int QImageReader::allocationLimit() Sets the allocation limit to \a mbLimit megabytes. Images that would require a QImage memory allocation above this limit will be rejected. + If \a mbLimit is 0, the allocation size check will be disabled. This limit helps applications avoid unexpectedly large memory usage from loading corrupt image files. It is normally not needed to change it. The default limit is large enough for all commonly used image sizes. + \note The memory requirements are calculated for a minimum of 32 bits per pixel, since Qt will + typically convert an image to that depth when it is used in GUI. This means that the effective + allocation limit is significantly smaller than \a mbLimit when reading 1 bpp and 8 bpp images. + \sa allocationLimit() */ void QImageReader::setAllocationLimit(int mbLimit) |