QImageReader: Pass up information about resource errors on open
If a system runs out of FDs, there is no sense in trying to autodetect the format - as the real problem is the lack of FDs, not the non-existent file. Change-Id: I3302340859c3cc62995ac1b7b3c7b6e6326cb43e Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
This commit is contained in:
parent
108956b53e
commit
66e162e8f1
@ -564,6 +564,16 @@ bool QImageReaderPrivate::initHandler()
|
|||||||
|
|
||||||
// probe the file extension
|
// probe the file extension
|
||||||
if (deleteDevice && !device->isOpen() && !device->open(QIODevice::ReadOnly) && autoDetectImageFormat) {
|
if (deleteDevice && !device->isOpen() && !device->open(QIODevice::ReadOnly) && autoDetectImageFormat) {
|
||||||
|
Q_ASSERT(qobject_cast<QFile*>(device) != 0); // future-proofing; for now this should always be the case, so...
|
||||||
|
QFile *file = static_cast<QFile *>(device);
|
||||||
|
|
||||||
|
if (file->error() == QFileDevice::ResourceError) {
|
||||||
|
// this is bad. we should abort the open attempt and note the failure.
|
||||||
|
imageReaderError = QImageReader::DeviceError;
|
||||||
|
errorString = file->errorString();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
QList<QByteArray> extensions = QImageReader::supportedImageFormats();
|
QList<QByteArray> extensions = QImageReader::supportedImageFormats();
|
||||||
if (!format.isEmpty()) {
|
if (!format.isEmpty()) {
|
||||||
// Try the most probable extension first
|
// Try the most probable extension first
|
||||||
@ -574,7 +584,6 @@ bool QImageReaderPrivate::initHandler()
|
|||||||
|
|
||||||
int currentExtension = 0;
|
int currentExtension = 0;
|
||||||
|
|
||||||
QFile *file = static_cast<QFile *>(device);
|
|
||||||
QString fileName = file->fileName();
|
QString fileName = file->fileName();
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
Loading…
Reference in New Issue
Block a user