summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Barron <jbarron@trolltech.com>2009-08-14 13:13:56 (GMT)
committerJason Barron <jbarron@trolltech.com>2009-08-14 13:13:56 (GMT)
commit8ea7bc92650e8e4c74e5ec2bbf05ef2b33107ee8 (patch)
tree9b2b9f071a498100fd31f0b818a5f1b71c364b98
parent53f08a35f50f41fe0151b0f1f8334332120b8826 (diff)
downloadQt-8ea7bc92650e8e4c74e5ec2bbf05ef2b33107ee8.zip
Qt-8ea7bc92650e8e4c74e5ec2bbf05ef2b33107ee8.tar.gz
Qt-8ea7bc92650e8e4c74e5ec2bbf05ef2b33107ee8.tar.bz2
Fix incorrect logic in QPixmap::fromSymbianCFbsBitmap.
In some alternate universes it might make sense to use a pointer before checking if it is valid, but since this isn't one we shoudn't do it. Also extend the autotest a little to make sure we catch this case.
-rw-r--r--src/gui/image/qpixmap_s60.cpp5
-rw-r--r--tests/auto/qpixmap/tst_qpixmap.cpp8
2 files changed, 12 insertions, 1 deletions
diff --git a/src/gui/image/qpixmap_s60.cpp b/src/gui/image/qpixmap_s60.cpp
index 58b3ee4..ab19924 100644
--- a/src/gui/image/qpixmap_s60.cpp
+++ b/src/gui/image/qpixmap_s60.cpp
@@ -202,10 +202,13 @@ return a null QPixmap.
QPixmap QPixmap::fromSymbianCFbsBitmap(CFbsBitmap *bitmap)
{
+ if (!bitmap)
+ return QPixmap();
+
int width = bitmap->SizeInPixels().iWidth;
int height = bitmap->SizeInPixels().iHeight;
- if (!bitmap || width <= 0 || height <= 0 || bitmap->IsCompressedInRAM())
+ if (width <= 0 || height <= 0 || bitmap->IsCompressedInRAM())
return QPixmap();
TDisplayMode displayMode = bitmap->DisplayMode();
diff --git a/tests/auto/qpixmap/tst_qpixmap.cpp b/tests/auto/qpixmap/tst_qpixmap.cpp
index 7321fe9..35d4cf3 100644
--- a/tests/auto/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/qpixmap/tst_qpixmap.cpp
@@ -1011,6 +1011,14 @@ void tst_QPixmap::fromSymbianCFbsBitmap()
bitmapContext->Clear();
__UHEAP_MARK;
+ { // Test the null case
+ CFbsBitmap *bitmap = 0;
+ QPixmap pixmap = QPixmap::fromSymbianCFbsBitmap(bitmap);
+ QVERIFY(pixmap.isNull());
+ }
+ __UHEAP_MARKEND;
+
+ __UHEAP_MARK;
{ // Test the normal case
QPixmap pixmap = QPixmap::fromSymbianCFbsBitmap(nativeBitmap);
// QCOMPARE(pixmap.depth(), expectedDepth); // Depth is not preserved now