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
......
......@@ -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