]> source.dussan.org Git - tigervnc.git/commitdiff
rfb: Silence nonliteral format string warning in Logger
authorSteve Kondik <shade@chemlab.org>
Sat, 8 Jul 2017 09:06:16 +0000 (02:06 -0700)
committerSteve Kondik <shade@chemlab.org>
Mon, 10 Jul 2017 16:14:43 +0000 (09:14 -0700)
Clang complains loudly about this with Wformat=2, so add
a __printf_attr to help out.

Fixes:

/home/shade/dev/tigervnc/common/rfb/Logger.cxx:48:35: error: format string is not a string literal [-Werror,-Wformat-nonliteral]
  vsnprintf(buf1, sizeof(buf1)-1, format, ap);
                                  ^~~~~~
1 error generated.

common/rfb/LogWriter.h
common/rfb/Logger.h

index 69b530ca96506801742f2011835f3b397ea4d129..104a8752608804ac60f7aaf2120a7202e4e0517f 100644 (file)
@@ -36,9 +36,9 @@
 // is assigned a particular log level.
 
 #define DEF_LOGFUNCTION(name, level) \
-  inline void v##name(const char* fmt, va_list ap) { \
-    if (m_log && (level <= m_level))       \
-      m_log->write(level, m_name, fmt, ap);\
+  inline void v##name(const char* fmt, va_list ap) __printf_attr(2, 0) { \
+    if (m_log && (level <= m_level))        \
+      m_log->write(level, m_name, fmt, ap); \
   } \
   inline void name(const char* fmt, ...) __printf_attr(2, 3) { \
     if (m_log && (level <= m_level)) {     \
index e53764b7d6bb05e04d251fc686ad33e711788c43..b75594c963483b7e129554ea110763b82fa777d5 100644 (file)
 // and is attached to a particular Logger instance and
 // is assigned a particular log level.
 
+#ifdef __GNUC__
+#  define __printf_attr(a, b) __attribute__((__format__ (__printf__, a, b)))
+#else
+#  define __printf_attr(a, b)
+#endif // __GNUC__
+
 namespace rfb {
 
   class Logger {
@@ -45,7 +51,7 @@ namespace rfb {
     // -=- Write data to a log
 
     virtual void write(int level, const char *logname, const char *text) = 0;
-    void write(int level, const char *logname, const char* format, va_list ap);
+    void write(int level, const char *logname, const char* format, va_list ap) __printf_attr(4, 0);
 
     // -=- Register a logger