BUILD: ist: prevent gcc11 maybe-uninitialized warning on istalloc
A new warning is reported by gcc11 when using a pointer to uninitialized
memory block for a function with a const pointer argument. The warning
is triggered for istalloc, used by http_client.c / proxy.c / tcpcheck.c.
This warning is reported because the uninitialized memory block
allocated by malloc should not be passed to a const argument as in ist2.
See https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wmaybe-uninitialized
This should be backported up to 2.2.
diff --git a/include/import/ist.h b/include/import/ist.h
index 0dc3008..539a27d 100644
--- a/include/import/ist.h
+++ b/include/import/ist.h
@@ -862,7 +862,15 @@
*/
static inline struct ist istalloc(const size_t size)
{
- return ist2(malloc(size), 0);
+ /* Note: do not use ist2 here, as it triggers a gcc11 warning.
+ * ‘<unknown>’ may be used uninitialized [-Werror=maybe-uninitialized]
+ *
+ * This warning is reported because the uninitialized memory block
+ * allocated by malloc should not be passed to a const argument as in
+ * ist2.
+ * See https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wmaybe-uninitialized
+ */
+ return (struct ist){ .ptr = malloc(size), .len = 0 };
}
/* This function performs the equivalent of free() on the given <ist>.