diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2012-10-08 16:40:13 +0300 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-10 13:24:23 +0200 |
commit | 008e5ba61a68846ad29c65a2fe10b8c19c74f6eb (patch) | |
tree | 59f1bc75adb09b41b862de4145924368529ef95d /src/gui/image/qpicture.cpp | |
parent | 34c31cd74cde7a1c36f3603a625fb0d28c259a6e (diff) |
Invalidate old QImage data if load()/loadFromData() has failed
This guarantees one will never get `!img.isNull()` after
load()/loadFromData() has failed, even if the image was
not null before.
Apply the same fix to QPixmap and QPicture.
Change-Id: Ida1ad6a6f0fc830df8e75ada0c163fc2d3360dea
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Diffstat (limited to 'src/gui/image/qpicture.cpp')
-rw-r--r-- | src/gui/image/qpicture.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/gui/image/qpicture.cpp b/src/gui/image/qpicture.cpp index 464e31a3e2..f75c6e40df 100644 --- a/src/gui/image/qpicture.cpp +++ b/src/gui/image/qpicture.cpp @@ -246,7 +246,7 @@ void QPicture::setData(const char* data, uint size) /*! Loads a picture from the file specified by \a fileName and returns - true if successful; otherwise returns false. + true if successful; otherwise invalidates the picture and returns false. Please note that the \a format parameter has been deprecated and will have no effect. @@ -257,8 +257,10 @@ void QPicture::setData(const char* data, uint size) bool QPicture::load(const QString &fileName, const char *format) { QFile f(fileName); - if (!f.open(QIODevice::ReadOnly)) + if (!f.open(QIODevice::ReadOnly)) { + operator=(QPicture()); return false; + } return load(&f, format); } @@ -273,18 +275,14 @@ bool QPicture::load(QIODevice *dev, const char *format) if(format) { #ifndef QT_NO_PICTUREIO QPictureIO io(dev, format); - bool result = io.read(); - if (result) { + if (io.read()) { operator=(io.picture()); - - } else if (format) -#else - bool result = false; -#endif - { - qWarning("QPicture::load: No such picture format: %s", format); + return true; } - return result; +#endif + qWarning("QPicture::load: No such picture format: %s", format); + operator=(QPicture()); + return false; } detach(); |