Fortran: frontend passes do_subscript leaks gmp memory [PR97345]
authorHarald Anlauf <anlauf@gmx.de>
Tue, 10 Jan 2023 21:41:17 +0000 (22:41 +0100)
committerHarald Anlauf <anlauf@gmx.de>
Tue, 10 Jan 2023 21:41:17 +0000 (22:41 +0100)
gcc/fortran/ChangeLog:

PR fortran/97345
* frontend-passes.cc (do_subscript): Clear used gmp variables.

gcc/fortran/frontend-passes.cc

index 612c12d..db2b982 100644 (file)
@@ -2892,7 +2892,12 @@ do_subscript (gfc_expr **e)
 
                  cmp = mpz_cmp (do_end, do_start);
                  if ((sgn > 0 && cmp < 0) || (sgn < 0 && cmp > 0))
-                   break;
+                   {
+                     mpz_clear (do_start);
+                     mpz_clear (do_end);
+                     mpz_clear (do_step);
+                     break;
+                   }
                }
 
              /* May have to correct the end value if the step does not equal
@@ -2965,6 +2970,12 @@ do_subscript (gfc_expr **e)
                      mpz_clear (val);
                    }
                }
+
+             if (have_do_start)
+               mpz_clear (do_start);
+             if (have_do_end)
+               mpz_clear (do_end);
+             mpz_clear (do_step);
            }
        }
     }