From 08e2b41e8183bede36f4fca1b8f849f18e4be13e Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 26 May 2019 11:50:08 +0200 Subject: [PATCH] BUILD: connections: shut up gcc about impossible out-of-bounds warning Since commit 88698d9 ("MEDIUM: connections: Add a way to control the number of idling connections.") when building without threads, gcc complains that the operations made on the idle_orphan_conns[] list is out of bounds, which is always false since 1) can only equal zero, and 2) given it's equal to we never even enter the loop. But as usual it thinks it knows better, so let's mask the origin of this value to shut it up. Another solution consists in making unsigned and adding an explicit range check. --- src/backend.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/backend.c b/src/backend.c index 467ef57a9..4dff185ec 100644 --- a/src/backend.c +++ b/src/backend.c @@ -1354,6 +1354,13 @@ int connect_server(struct stream *s) for (i = 0; i < global.nbthread; i++) { if (i == tid) continue; + + // just silence stupid gcc which reports an absurd + // out-of-bounds warning for which is always + // exactly zero without threads, but it seems to + // see it possibly larger. + ALREADY_CHECKED(i); + tokill_conn = LIST_POP_LOCKED(&srv->idle_orphan_conns[i], struct connection *, list); if (tokill_conn) {