summaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-20 08:16:48 +0000
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2007-12-20 08:16:48 +0000
commitbd27f10defae57d8ca9f20a3bb135eb8f8928a09 (patch)
treeeab804f70961f5d88c426a50b8e0c132732f0dd4 /libgfortran
parentcb989427b3d6fb67e4182b701af7e0a18c2e20d2 (diff)
downloadgcc-bd27f10defae57d8ca9f20a3bb135eb8f8928a09.tar.gz
2007-12-20 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-20 Tobias Burnus <burnus@net-b.de> PR fortran/34530 * gfortran.dg/namelist_44.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131099 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/list_read.c37
2 files changed, 28 insertions, 15 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 286524b35c2..9d84e1bd5fa 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+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
diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c
index df43589cad0..06fd8a151ea 100644
--- a/libgfortran/io/list_read.c
+++ b/libgfortran/io/list_read.c
@@ -275,6 +275,20 @@ eat_spaces (st_parameter_dt *dtp)
}
+/* 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
@@ -328,7 +342,14 @@ eat_separator (st_parameter_dt *dtp)
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);
}
@@ -407,20 +428,6 @@ finish_separator (st_parameter_dt *dtp)
}
-/* 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. */