+2007-12-20 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/34530
+ * gfortran.dg/namelist_44.f90: New.
+
2007-12-20 Tobias Burnus <burnus@net-b.de>
PR fortran/34482
--- /dev/null
+! { dg-do run }
+!
+! PR fortran/34530
+!
+! Skipping over comment line was not working
+!
+! Test case contributed by Harald Anlauf.
+!
+program gfcbug77
+ implicit none
+
+ character(len=128) :: file = ""
+ logical :: default
+ namelist /BLACKLIST/ file, default
+ integer, parameter :: nnml = 10
+ default = .true.
+
+ open (nnml, file='gfcbug77.nml')
+ write(nnml,*) "&blacklist " ! The trailing space breaks gfortran
+ write(nnml,*) " ! This is a comment within the namelist"
+ write(nnml,*) " file = 'myfile'"
+ write(nnml,*) " default = F"
+ write(nnml,*) "/"
+ rewind(nnml)
+ read (nnml, nml=BLACKLIST)
+ close(nnml)
+ if(file /= "myfile" .or. default) call abort()
+! write (*,nml=BLACKLIST)
+end program gfcbug77
+2007-12-19 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/34530
+ * io/list_read.c (eat_line): Move up in the file.
+ (eat_separator): In namelist mode, skip over comment lines.
+
2007-12-16 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/34427
}
+/* This function reads characters through to the end of the current line and
+ just ignores them. */
+
+static void
+eat_line (st_parameter_dt *dtp)
+{
+ char c;
+ if (!is_internal_unit (dtp))
+ do
+ c = next_char (dtp);
+ while (c != '\n');
+}
+
+
/* Skip over a separator. Technically, we don't always eat the whole
separator. This is because if we've processed the last input item,
then a separator is unnecessary. Plus the fact that operating
if (dtp->u.p.namelist_mode)
{
do
- c = next_char (dtp);
+ {
+ c = next_char (dtp);
+ if (c == '!')
+ {
+ eat_line (dtp);
+ c = next_char (dtp);
+ }
+ }
while (c == '\n' || c == '\r' || c == ' ');
unget_char (dtp, c);
}
}
-/* This function reads characters through to the end of the current line and
- just ignores them. */
-
-static void
-eat_line (st_parameter_dt *dtp)
-{
- char c;
- if (!is_internal_unit (dtp))
- do
- c = next_char (dtp);
- while (c != '\n');
-}
-
-
/* This function is needed to catch bad conversions so that namelist can
attempt to see if dtp->u.p.saved_string contains a new object name rather
than a bad value. */