Fix compiler warning in mul_var_short().
authorDean Rasheed <dean.a.rasheed@gmail.com>
Mon, 26 Aug 2024 10:00:20 +0000 (11:00 +0100)
committerDean Rasheed <dean.a.rasheed@gmail.com>
Mon, 26 Aug 2024 10:00:20 +0000 (11:00 +0100)
Some compilers (e.g., gcc before version 7) mistakenly think "carry"
might be used uninitialized.

Reported by Tom Lane, per various buildfarm members, e.g. arowana.

src/backend/utils/adt/numeric.c

index 44d88e900792f8b58d336dc72158f87fcef45411..15b517ba988bf3e6c9b249234681c324aba91e74 100644 (file)
@@ -8969,7 +8969,7 @@ mul_var_short(const NumericVar *var1, const NumericVar *var2,
        int                     res_ndigits;
        NumericDigit *res_buf;
        NumericDigit *res_digits;
-       uint32          carry;
+       uint32          carry = 0;
        uint32          term;
 
        /* Check preconditions */
@@ -9018,7 +9018,6 @@ mul_var_short(const NumericVar *var1, const NumericVar *var2,
                         *              res_ndigits = var2ndigits + 1
                         * ----------
                         */
-                       carry = 0;
                        for (int i = var2ndigits - 1; i >= 0; i--)
                        {
                                term = PRODSUM1(var1digits, 0, var2digits, i) + carry;