]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: connections: shut up gcc about impossible out-of-bounds warning
authorWilly Tarreau <w@1wt.eu>
Sun, 26 May 2019 09:50:08 +0000 (11:50 +0200)
committerWilly Tarreau <w@1wt.eu>
Sun, 26 May 2019 09:54:20 +0000 (11:54 +0200)
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) <i> can only equal zero,
and 2) given it's equal to <tid> we never even enter the loop. But as
usual it thinks it knows better, so let's mask the origin of this <i>
value to shut it up. Another solution consists in making <i> unsigned
and adding an explicit range check.

src/backend.c

index 467ef57a9b0cd3eb33c40b203e036a7db969e5bb..4dff185ec5e60c6f35c58fcfc04b3d99aed5cde4 100644 (file)
@@ -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 <i> 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) {