OSDN Git Service

2008-02-05 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Feb 2008 20:40:45 +0000 (20:40 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 5 Feb 2008 20:40:45 +0000 (20:40 +0000)
        PR fortran/35093
        * data.c (gfc_assign_data_value): Only free "size" if
        it has not already been freed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132128 138bc75d-0d04-0410-961f-82ee72b054a4

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

index b795f89..72918d8 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 10fcd48..654c438 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.  */