Namelist having problems with whitespace?
Jerry DeLisle
jvdelisle@verizon.net
Mon Jun 16 04:38:00 GMT 2008
Steve Edwards wrote:
> On Fri, 13 Jun 2008 20:54:48 -0700
> Jerry DeLisle <jvdelisle@verizon.net> wrote:
>
>> Jerry DeLisle wrote:
>>> Steve Edwards wrote:
>>>> On Sat, 14 Jun 2008 01:52:25 +0100
>>>> Steve Edwards <edwardss@korime.demon.co.uk> wrote:
>>>>> Dear all,
>>>>>
>>>>> I have just run across what appears to be strange behaviour with
>>>>> namelists. First spotted in a custom build of gcc 4.3.0 and I've just
>>>>> got a reduced test case on my home machine with 4.3.0 20080428 (Red
>>>>> Hat 4.3.0-8)
>>>> My apologies but I should have said what platform that was on:
>>>>
>>>> Fedora 9
>>>> x86_64-unknown-linux-gnu
>>>>
>>>> First seen on Fedora 8
>>>> i686-pc-linux-gnu
>>>>
>>>> I can try other platforms if that would be helpful to anyone.
>>>>
>>>> Steve E
>>> I am running the same platform. Thanks for the report. This is now
>>> PR36538
>>>
>>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36538
>>>
>>> Jerry
>>>
>> Steve,
>>
>> In case you are not watching the PR report, here is a patch:
>>
>> Index: list_read.c
>> ===================================================================
>> --- list_read.c (revision 136763)
>> +++ list_read.c (working copy)
>> @@ -2922,6 +2922,8 @@ find_nml_name:
>> goto find_nml_name;
>> }
>>
>> + eat_separator (dtp);
>> +
>> /* Ready to read namelist objects. If there is an error in input
>> from stdin, output the error message and continue. */
>>
>> Regards,
>>
>> Jerry
>
> Sorry to say it fixed the test case and I then ran in to a similar error. I applied the patch to a freshly download 4.3.1 and then managed to get the following:
>
> cat check1.f
> program check1
> real a,b,c
> namelist/CASEDAT/A,B,C
> read(1,casedat)
> print*,'a=',a
> print*,'b=',b
> print*,'c=',c
> end
>
> cat fort.1
> &CASEDAT
> A = 1.0, B = 2.0,
> C = 3.0,
> /
>
> Again all whitespace being tabs. This time it's the two tabs preceding C that cause the same runtime error:
>
> At line 4 of file check1.f (unit = 1, file = 'fort.1')
> Fortran runtime error: Cannot match namelist object name
>
> I checked in the debugger, and it seems to be reading A and B okay.
>
> Remove the C line and it works perfectly.
>
> I did try to work out what should have been happening, but I'm afraid my C skills aren't up to it!
>
> Thanks for all of your help!
>
> Steve E
Thanks for report, obviously we don't use tabs very much :)
Try this patch please.
Regards,
Jerry
Index: list_read.c
===================================================================
--- list_read.c (revision 136821)
+++ list_read.c (working copy)
@@ -366,7 +366,7 @@ eat_separator (st_parameter_dt *dtp)
}
}
}
- while (c == '\n' || c == '\r' || c == ' ');
+ while (c == '\n' || c == '\r' || c == ' ' || c == '\t');
unget_char (dtp, c);
}
break;
More information about the Fortran
mailing list