[PATCH] Pictures: prevent a 'will always evaluate as true' warning

Lubomir I. Ivanov neolit123 at gmail.com
Sun Jul 20 05:50:28 PDT 2014


From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

If you take the address of a extern struct and pass it to
a macro (FOR_EACH_PICTURE) where there is a check if this
address is not NULL you will get a -Waddress warning.

The address of such a variable cannot ever be NULL.

To solve that we create a function local pointer and pass
it to the macro itself.

On a wider scale (i.e. the macro is used with a lot of different
extern variables) the better solution is to define another
macro FOR_EACH_PICTURE_SAFE where only the NULL check exists.

Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
---
 qt-ui/divepicturewidget.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/qt-ui/divepicturewidget.cpp b/qt-ui/divepicturewidget.cpp
index fd64f61..8e2f097 100644
--- a/qt-ui/divepicturewidget.cpp
+++ b/qt-ui/divepicturewidget.cpp
@@ -34,20 +34,21 @@ SPixmap scaleImages(const QString &s)
 
 void DivePictureModel::updateDivePictures()
 {
+	struct dive *displayed = &displayed_dive;
 	if (numberOfPictures != 0) {
 		beginRemoveRows(QModelIndex(), 0, numberOfPictures - 1);
 		numberOfPictures = 0;
 		endRemoveRows();
 	}
 
-	numberOfPictures = dive_get_picture_count(&displayed_dive);
+	numberOfPictures = dive_get_picture_count(displayed);
 	if (numberOfPictures == 0) {
 		return;
 	}
 
 	stringPixmapCache.clear();
 	QStringList pictures;
-	FOR_EACH_PICTURE (&displayed_dive) {
+	FOR_EACH_PICTURE (displayed) {
 		stringPixmapCache[QString(picture->filename)].picture = picture;
 		pictures.push_back(QString(picture->filename));
 	}
-- 
1.7.11.msysgit.0



More information about the subsurface mailing list