2006-10-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/27954
* decl.c (gfc_free_data_all): New function to free all data structures
after errors in DATA statements and declarations.
(top_var_list): Use new function.(top_val_list): Use new function.
(gfc_match_data_decl): Use new function.
* misc.c (gfc_typename): Fixed incorrect function name in error text.
From-SVN: r118084
+2006-10-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/27954
+ * decl.c (gfc_free_data_all): New function to free all data structures
+ after errors in DATA statements and declarations.
+ (top_var_list): Use new function.(top_val_list): Use new function.
+ (gfc_match_data_decl): Use new function.
+ * misc.c (gfc_typename): Fixed incorrect function name in error text.
+
2006-10-24 Erik Edelmann <eedelman@gcc.gnu.org>
PR fortran/29393
}
+/* Free all data in a namespace. */
+static void
+gfc_free_data_all (gfc_namespace * ns)
+{
+ gfc_data *d;
+
+ for (;ns->data;)
+ {
+ d = ns->data->next;
+ gfc_free (ns->data);
+ ns->data = d;
+ }
+}
+
+
static match var_element (gfc_data_variable *);
/* Match a list of variables terminated by an iterator and a right
syntax:
gfc_syntax_error (ST_DATA);
+ gfc_free_data_all (gfc_current_ns);
return MATCH_ERROR;
}
syntax:
gfc_syntax_error (ST_DATA);
+ gfc_free_data_all (gfc_current_ns);
return MATCH_ERROR;
}
gfc_error ("Syntax error in data declaration at %C");
m = MATCH_ERROR;
+ gfc_free_data_all (gfc_current_ns);
+
cleanup:
gfc_free_array_spec (current_as);
current_as = NULL;
strcpy (buffer, "UNKNOWN");
break;
default:
- gfc_internal_error ("gfc_typespec(): Undefined type");
+ gfc_internal_error ("gfc_typename(): Undefined type");
}
return buffer;