Commit 1084b6b0 by Tobias Burnus

re PR fortran/30783 ("character(*), value" produces SEGV at runtime)

2007-02-20  Tobias Burnus  <burnus@net-b.de>

       PR fortran/30783
       * resolve.c (resolve_symbol): Add character dummy VALUE check.

From-SVN: r122156
parent c88b0c50
2007-02-20 Tobias Burnus <burnus@net-b.de>
PR fortran/30783
* resolve.c (resolve_symbol): Add character dummy VALUE check.
2007-02-19 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/30533
......@@ -29,8 +34,8 @@
2007-02-18 Roger Sayle <roger@eyesopen.com>
Paul Thomas <pault@gcc.gnu.org>
PR fortran/30400
* match.c (match_forall_iterator): Use gfc_match_expr instead
PR fortran/30400
* match.c (match_forall_iterator): Use gfc_match_expr instead
of gfc_match_variable to match the iterator variable. Return
MATCH_NO if not a variable. Remove the reset of the symbol's
flavor in cleanup.
......
......@@ -6153,10 +6153,22 @@ resolve_symbol (gfc_symbol *sym)
if (sym->attr.value && !sym->attr.dummy)
{
gfc_error ("'%s' at %L cannot have the VALUE attribute because "
"it is not a dummy", sym->name, &sym->declared_at);
"it is not a dummy argument", sym->name, &sym->declared_at);
return;
}
if (sym->attr.value && sym->ts.type == BT_CHARACTER)
{
gfc_charlen *cl = sym->ts.cl;
if (!cl || !cl->length || cl->length->expr_type != EXPR_CONSTANT)
{
gfc_error ("Character dummy variable '%s' at %L with VALUE "
"attribute must have constant length",
sym->name, &sym->declared_at);
return;
}
}
/* If a derived type symbol has reached this point, without its
type being declared, we have an error. Notice that most
conditions that produce undefined derived types have already
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment