summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHarald Fernengel <harald.fernengel@nokia.com>2013-06-27 09:41:46 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-12-17 19:05:50 +0100
commite7d39c929204f631d11e2f87b2f8e972b1abbf6e (patch)
tree4ac3193d4e02aba6aad0c5464c648ad143ef1ba4 /src
parentd1f8a5641615eb83bb36b4ada5913531d0da24f1 (diff)
Introduce Q_ATTRIBUTE_FORMAT_PRINTF
Removes a lot of copy-paste code for flagging printf style functions. Change-Id: Iecc1e312d1f28b5cbb6b297039f1cdbbc888f843 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/corelib/global/qglobal.h13
-rw-r--r--src/corelib/global/qlogging.h49
-rw-r--r--src/corelib/tools/qstring.h20
3 files changed, 20 insertions, 62 deletions
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index 3c3d35e373..9e2dce6d8c 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -462,6 +462,19 @@ typedef qptrdiff qintptr;
# define QT_FASTCALL
#endif
+// enable gcc warnings for printf-style functions
+#if defined(Q_CC_GNU) && !defined(__INSURE__)
+# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
+# define Q_ATTRIBUTE_FORMAT_PRINTF(A, B) \
+ __attribute__((format(gnu_printf, (A), (B))))
+# else
+# define Q_ATTRIBUTE_FORMAT_PRINTF(A, B) \
+ __attribute__((format(printf, (A), (B))))
+# endif
+#else
+# define Q_ATTRIBUTE_FORMAT_PRINTF(A, B)
+#endif
+
//defines the type for the WNDPROC on windows
//the alignment needs to be forced for sse2 to not crash with mingw
#if defined(Q_OS_WIN)
diff --git a/src/corelib/global/qlogging.h b/src/corelib/global/qlogging.h
index 2b798f9ea0..5ae1fb3205 100644
--- a/src/corelib/global/qlogging.h
+++ b/src/corelib/global/qlogging.h
@@ -92,55 +92,16 @@ public:
Q_DECL_CONSTEXPR QMessageLogger(const char *file, int line, const char *function, const char *category)
: context(file, line, function, category) {}
- void debug(const char *msg, ...) const
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
-# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
- __attribute__ ((format (gnu_printf, 2, 3)))
-# else
- __attribute__ ((format (printf, 2, 3)))
-# endif
-#endif
- ;
- void noDebug(const char *, ...) const
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
-# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
- __attribute__ ((format (gnu_printf, 2, 3)))
-# else
- __attribute__ ((format (printf, 2, 3)))
-# endif
-#endif
+ void debug(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
+ void noDebug(const char *, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3)
{}
- void warning(const char *msg, ...) const
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
-# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
- __attribute__ ((format (gnu_printf, 2, 3)))
-# else
- __attribute__ ((format (printf, 2, 3)))
-# endif
-#endif
- ;
- void critical(const char *msg, ...) const
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
-# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
- __attribute__ ((format (gnu_printf, 2, 3)))
-# else
- __attribute__ ((format (printf, 2, 3)))
-# endif
-#endif
- ;
+ void warning(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
+ void critical(const char *msg, ...) const Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
#ifndef Q_CC_MSVC
Q_NORETURN
#endif
- void fatal(const char *msg, ...) const Q_DECL_NOTHROW
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
-# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
- __attribute__ ((format (gnu_printf, 2, 3)))
-# else
- __attribute__ ((format (printf, 2, 3)))
-# endif
-#endif
- ;
+ void fatal(const char *msg, ...) const Q_DECL_NOTHROW Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
#ifndef QT_NO_DEBUG_STREAM
QDebug debug() const;
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index 3140af084b..0a0a609728 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -302,24 +302,8 @@ public:
const QString &a4, const QString &a5, const QString &a6,
const QString &a7, const QString &a8, const QString &a9) const Q_REQUIRED_RESULT;
- QString &vsprintf(const char *format, va_list ap)
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
-# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
- __attribute__ ((format (gnu_printf, 2, 0)))
-# else
- __attribute__ ((format (printf, 2, 0)))
-# endif
-#endif
- ;
- QString &sprintf(const char *format, ...)
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
-# if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
- __attribute__ ((format (gnu_printf, 2, 3)))
-# else
- __attribute__ ((format (printf, 2, 3)))
-# endif
-#endif
- ;
+ QString &vsprintf(const char *format, va_list ap) Q_ATTRIBUTE_FORMAT_PRINTF(2, 0);
+ QString &sprintf(const char *format, ...) Q_ATTRIBUTE_FORMAT_PRINTF(2, 3);
int indexOf(QChar c, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
int indexOf(const QString &s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;