[gfortran,committed] Fix half or PR31251: segfault in real charlen
Jerry DeLisle
jvdelisle@verizon.net
Fri May 4 14:42:00 GMT 2007
Tobias Schlüter wrote:
> François-Xavier Coudert wrote:
>> Index: simplify.c
>> ===================================================================
>> --- simplify.c (revision 124412)
>> +++ simplify.c (working copy)
>> @@ -2136,14 +2136,15 @@ gfc_simplify_len (gfc_expr *e)
>> }
>>
>> if (e->ts.cl != NULL && e->ts.cl->length != NULL
>> - && e->ts.cl->length->expr_type == EXPR_CONSTANT)
>> + && e->ts.cl->length->expr_type == EXPR_CONSTANT
>> + && e->ts.cl->length->ts.type == BT_INTEGER)
>> {
>> result = gfc_constant_result (BT_INTEGER, gfc_default_integer_kind,
>> &e->where);
>> mpz_set (result->value.integer, e->ts.cl->length->value.integer);
>> return range_check (result, "LEN");
>> }
>
> IIUC this shouldn't ever happen. If there's an erroneous character
> length specified, it shouldn't be kept in place, and then worked around
> down the line. Instead the charlen pointer should be set to NULL. This
> may also be the solution to the double error, if, as I suppose, one
> error is emitted during parsing, and one during resolution.
>
> Cheers,
> - Tobi
> (who speaks w/o having the code around to check himself)
>
Thanks for the commit FX. Now back to the second half of the problem.
Jerry
More information about the Fortran
mailing list