OSDN Git Service

PR fortran/43029
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Feb 2010 19:31:35 +0000 (19:31 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 11 Feb 2010 19:31:35 +0000 (19:31 +0000)
* decl.c (enumerator_decl): Don't call gfc_free_enum_history
here.
(gfc_match_enumerator_def): But here whenever enumerator_decl returns
MATCH_ERROR.

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

gcc/fortran/ChangeLog
gcc/fortran/decl.c

index 5efa90c..956d73c 100644 (file)
@@ -1,3 +1,11 @@
+2010-02-11  Jakub Jelinek  <jakub@redhat.com>
+
+       PR fortran/43029
+       * decl.c (enumerator_decl): Don't call gfc_free_enum_history
+       here.
+       (gfc_match_enumerator_def): But here whenever enumerator_decl returns
+       MATCH_ERROR.
+
 2010-02-10  Joost VandeVondele <jv244@cam.ac.uk>
            Tobias Burnus <burnus@net-b.de>
 
index 82c67ae..0f3898f 100644 (file)
@@ -7124,10 +7124,9 @@ enumerator_decl (void)
 
   if (initializer == NULL || initializer->ts.type != BT_INTEGER)
     {
-      gfc_error("ENUMERATOR %L not initialized with integer expression",
-               &var_locus);
+      gfc_error ("ENUMERATOR %L not initialized with integer expression",
+                &var_locus);
       m = MATCH_ERROR;
-      gfc_free_enum_history ();
       goto cleanup;
     }
 
@@ -7193,7 +7192,10 @@ gfc_match_enumerator_def (void)
     {
       m = enumerator_decl ();
       if (m == MATCH_ERROR)
-       goto cleanup;
+       {
+         gfc_free_enum_history ();
+         goto cleanup;
+       }
       if (m == MATCH_NO)
        break;