From 56e9bb9bd6861c7e5c60a5d304966f39c44b6c23 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Fri, 15 Jan 2016 15:17:37 -0800 Subject: [PATCH] adb: tag fatal, fatal_errno with printf attribute. Also, fix bugs that this uncovered. In particular, the sysdeps_win32 FATAL macro would only print __FUNCTION__. Change-Id: I6307ec9749edec21b4fee192e135a86ec445c84b --- adb/adb.h | 8 ++++---- adb/sysdeps_win32.cpp | 7 +++++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/adb/adb.h b/adb/adb.h index 9020fc3a3..59644d43e 100644 --- a/adb/adb.h +++ b/adb/adb.h @@ -142,10 +142,10 @@ struct alistener void print_packet(const char *label, apacket *p); - - -void fatal(const char *fmt, ...) __attribute__((noreturn)); -void fatal_errno(const char *fmt, ...) __attribute__((noreturn)); +// These use the system (v)fprintf, not the adb prefixed ones defined in sysdeps.h, so they +// shouldn't be tagged with ADB_FORMAT_ARCHETYPE. +void fatal(const char* fmt, ...) __attribute__((noreturn, format(__printf__, 1, 2))); +void fatal_errno(const char* fmt, ...) __attribute__((noreturn, format(__printf__, 1, 2))); void handle_packet(apacket *p, atransport *t); diff --git a/adb/sysdeps_win32.cpp b/adb/sysdeps_win32.cpp index 0a2a8f690..c3889b686 100644 --- a/adb/sysdeps_win32.cpp +++ b/adb/sysdeps_win32.cpp @@ -88,7 +88,10 @@ static const FHClassRec _fh_socket_class = { _fh_socket_hook }; -#define assert(cond) do { if (!(cond)) fatal( "assertion failed '%s' on %s:%ld\n", #cond, __FILE__, __LINE__ ); } while (0) +#define assert(cond) \ + do { \ + if (!(cond)) fatal("assertion failed '%s' on %s:%d\n", #cond, __FILE__, __LINE__); \ + } while (0) std::string SystemErrorCodeToString(const DWORD error_code) { const int kErrorMessageBufferSize = 256; @@ -1589,7 +1592,7 @@ int adb_socketpair(int sv[2]) { /**************************************************************************/ /**************************************************************************/ -#define FATAL(x...) fatal(__FUNCTION__, x) +#define FATAL(fmt, ...) fatal("%s: " fmt, __FUNCTION__, ##__VA_ARGS__) #if DEBUG static void dump_fde(fdevent *fde, const char *info)