]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/35093 (gfortran.dg/data_constraints_1.f90)
authorTobias Burnus <burnus@net-b.de>
Tue, 5 Feb 2008 20:40:45 +0000 (21:40 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Tue, 5 Feb 2008 20:40:45 +0000 (21:40 +0100)
2008-02-05  Tobias Burnus  <burnus@net-b.de>

        PR fortran/35093
        * data.c (gfc_assign_data_value): Only free "size" if
        it has not already been freed.

From-SVN: r132128

gcc/fortran/ChangeLog
gcc/fortran/data.c

index b795f897848b5ee51c1a69de67372b54ff14143b..72918d8287c54eda784c399914a4eaed1f6a0a70 100644 (file)
@@ -1,3 +1,9 @@
+2008-02-05  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/35093
+       * data.c (gfc_assign_data_value): Only free "size" if
+       it has not already been freed.
+
 2008-02-05  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/34945
index 10fcd48676e4af274dd980495dfdb2cd455c22e6..654c4384de6e3e2de369fdd8063b7677bd3d119c 100644 (file)
@@ -321,15 +321,17 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index)
          else
            {
              mpz_t size;
-             if (spec_size (ref->u.ar.as, &size) == SUCCESS
-                  && mpz_cmp (offset, size) >= 0)
+             if (spec_size (ref->u.ar.as, &size) == SUCCESS)
                {
+                 if (mpz_cmp (offset, size) >= 0)
+                 {
+                   mpz_clear (size);
+                   gfc_error ("Data element above array upper bound at %L",
+                              &lvalue->where);
+                   return FAILURE;
+                 }
                  mpz_clear (size);
-                 gfc_error ("Data element above array upper bound at %L",
-                            &lvalue->where);
-                 return FAILURE;
                }
-             mpz_clear (size);
            }
 
          /* Splay tree containing offset and gfc_constructor.  */