On some 32 bit systems sizeof does not return (unsigned long). The size_t formater %zu handles this across architectures. Fixes the error: In file included from src/advertising.c:30: src/advertising.c: In function ‘read_controller_cap_complete’: src/log.h:60:20: error: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 5 has type ‘unsigned int’ [-Werror=format=] 60 | btd_error(0xffff, "%s:%s() " fmt, __FILE__, __func__, ## arg) | ^~~~~~~~~~ src/advertising.c:1757:3: note: in expansion of macro ‘error’ 1757 | error("Controller capabilities malformed, size %lu != %u", | ^~~~~ src/advertising.c:1757:52: note: format string is defined here 1757 | error("Controller capabilities malformed, size %lu != %u", | ~~^ | | | long unsigned int | %u --- src/advertising.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/advertising.c b/src/advertising.c index 4f5123fa1..15a343e52 100644 --- a/src/advertising.c +++ b/src/advertising.c @@ -1754,7 +1754,7 @@ static void read_controller_cap_complete(uint8_t status, uint16_t length, } if (sizeof(rp->cap_len) + rp->cap_len != length) { - error("Controller capabilities malformed, size %lu != %u", + error("Controller capabilities malformed, size %zu != %u", sizeof(rp->cap_len) + rp->cap_len, length); return; } -- 2.25.4