From b81700144d62ebc2537b656c05154831df1cdae8 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 7 Jul 2020 09:38:33 +0530 Subject: [PATCH] Silence another code scanning warning --- glfw/xkb_glfw.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/glfw/xkb_glfw.c b/glfw/xkb_glfw.c index 07637eb16..128988d04 100644 --- a/glfw/xkb_glfw.c +++ b/glfw/xkb_glfw.c @@ -506,14 +506,18 @@ static inline const char* format_xkb_mods(_GLFWXKBData *xkb, const char* name, xkb_mod_mask_t mods) { static char buf[512]; char *p = buf, *s; -#define pr(x) p += snprintf(p, sizeof(buf) - (p - buf) - 1, "%s", x) +#define pr(x) { \ + int num_needed = -1; \ + if (sizeof(buf) > (unsigned long)((p - buf) + 1)) num_needed = snprintf(p, sizeof(buf) - (p - buf) - 1, "%s", x); \ + if (num_needed > 0) p += num_needed; \ +} pr(name); pr(": "); s = p; for (xkb_mod_index_t i = 0; i < xkb_keymap_num_mods(xkb->keymap); i++) { xkb_mod_mask_t m = 1 << i; if (m & mods) { pr(xkb_keymap_mod_get_name(xkb->keymap, i)); pr("+"); } } - if (p == s) pr("none"); + if (p == s) { pr("none"); } else p--; pr(" "); #undef pr