From a88e8bf4283cea6d21eb88ba819316185e1c3465 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Sun, 10 Jul 2022 13:13:52 +0200 Subject: [PATCH] BUILD: http: silence an uninitialized warning affecting gcc-5 When building with gcc-5, one can see this warning: src/http_fetch.c: In function 'smp_fetch_meth': src/http_fetch.c:356:6: warning: 'htx' may be used uninitialized in this function [-Wmaybe-uninitialized] sl = http_get_stline(htx); ^ It's wrong since the only way to reach this code is to have met the same condition a few lines before and initialized the htx variable. The reason in fact is that the same test happens on different variables of distinct types, so the compiler possibly doesn't know that the condition is the same. Newer gcc versions do not have this problem. Let's just move the assignment earlier and have the exact same test, as it's sufficient to shut this up. This may have to be backported to 2.6 since the code is the same there. --- src/http_fetch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/http_fetch.c b/src/http_fetch.c index f70fc7f03..ddfb2222d 100644 --- a/src/http_fetch.c +++ b/src/http_fetch.c @@ -341,13 +341,13 @@ static int smp_fetch_meth(const struct arg *args, struct sample *smp, const char if (!txn) return 0; - if (txn->meth == HTTP_METH_OTHER) { + meth = txn->meth; + if (meth == HTTP_METH_OTHER) { htx = smp_prefetch_htx(smp, chn, NULL, 1); if (!htx) return 0; } - meth = txn->meth; smp->data.type = SMP_T_METH; smp->data.u.meth.meth = meth; if (meth == HTTP_METH_OTHER) {