]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Suppress new "may be used uninitialized" warning.
authorNoah Misch <noah@leadboat.com>
Tue, 17 Feb 2026 02:04:58 +0000 (18:04 -0800)
committerNoah Misch <noah@leadboat.com>
Tue, 17 Feb 2026 02:04:58 +0000 (18:04 -0800)
Various buildfarm members, having compilers like gcc 8.5 and 6.3, fail
to deduce that text_substring() variable "E" is initialized if
slice_size!=-1.  This suppression approach quiets gcc 8.5; I did not
reproduce the warning elsewhere.  Back-patch to v14, like commit
9f4fd119b2cbb9a41ec0c19a8d6ec9b59b92c125.

Reported-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/1157953.1771266105@sss.pgh.pa.us
Backpatch-through: 14

src/backend/utils/adt/varlena.c

index d8ea7f45bcc6ef8d11b9e21dc7775c897947fdc1..7caf700fd619849d3a2a5c60ce13be1a6ccdcaa5 100644 (file)
@@ -665,14 +665,14 @@ text_substring(Datum str, int32 start, int32 length, bool length_not_specified)
 
                if (length_not_specified)       /* special case - get length to end of
                                                                         * string */
-                       slice_size = L1 = -1;
+                       E = slice_size = L1 = -1;
                else if (length < 0)
                {
                        /* SQL99 says to throw an error for E < S, i.e., negative length */
                        ereport(ERROR,
                                        (errcode(ERRCODE_SUBSTRING_ERROR),
                                         errmsg("negative substring length not allowed")));
-                       slice_size = L1 = -1;   /* silence stupider compilers */
+                       E = slice_size = L1 = -1;       /* silence stupider compilers */
                }
                else if (pg_add_s32_overflow(S, length, &E))
                {