[patch, libfortran] PR34427 namelist input of inf-nan

Jerry DeLisle jvdelisle@verizon.net
Sun Dec 16 15:53:00 GMT 2007


Tobias Burnus wrote:
> Jerry DeLisle wrote:
>> 2007-12-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
>>
>>     PR fortran/34427
>>     * io/list_read.c (read_real): Handle intervening line ends and
>> spaces.
>>     (get_name): Don't push separators to saved_string.
>>     (eat_separator): If in namelist mode eat spaces and line ends as
>> well.
> The patch is OK, but I have some comments/questions:
> 
> @@ -316,6 +316,13 @@ eat_separator (st_parameter_dt *dtp)
>  
>      case '\n':
>        dtp->u.p.at_eol = 1;
> +      if (dtp->u.p.namelist_mode)
> +	{
> +	  do
> +	    c = next_char (dtp);
> +	  while (c == '\n' || c == '\r' || c == ' ');
> +	  unget_char (dtp, c);
> +	}
>        break;
> 
> 
> I wonder whether one should do something similar for '\r'. If I recall
> correctly, the normal line-break character on MacOS was (is?) '\r'
> (while Unix has '\n' and Windows "\r\n").

According to Wikipedia, the '\r' is used in MacOS up to version 9.  So we better 
accommodate it just in case.

> 
> 
> Additionally, I think one can replace:
> 
>  exp2:
>   if (!isdigit (c))
>     {
>       if (c == 'i' || c == 'I' || c == 'n' || c == 'N')
>         goto inf_nan;
>       else
>         goto bad;
>     }
> 
> by

Done.  I forgot this was in two places.

> 
>  exp2:
>   if (!isdigit (c))
>     goto bad;
> 
> I changed this in my original Inf/NaN patch to the upper version, but
> you correctly remarked that it does not make much sense to have it for
> exp2. (But I forgot to change it back when I checked the patch in.) You
> can undo my change if you want.

Thanks for review.  I will commit after the above changes and retest.

Jerry



More information about the Gcc-patches mailing list