From 5ec2d09b84d8ea77c67ac0b9ea44c0590d252ad3 Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Sat, 8 Jul 2017 02:06:16 -0700 Subject: rfb: Silence nonliteral format string warning in Logger 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 | 6 +++--- common/rfb/Logger.h | 8 +++++++- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'common') diff --git a/common/rfb/LogWriter.h b/common/rfb/LogWriter.h index 69b530ca..104a8752 100644 --- a/common/rfb/LogWriter.h +++ b/common/rfb/LogWriter.h @@ -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)) { \ diff --git a/common/rfb/Logger.h b/common/rfb/Logger.h index e53764b7..b75594c9 100644 --- a/common/rfb/Logger.h +++ b/common/rfb/Logger.h @@ -28,6 +28,12 @@ // 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 -- cgit v1.2.3