OSDN Git Service

2005-10-24 Paul Thomas <pault@gcc.gnu.org>
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 24 Oct 2005 20:20:40 +0000 (20:20 +0000)
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 24 Oct 2005 20:20:40 +0000 (20:20 +0000)
PR fortran/24416
* libgfortran/io/list_read.c (namelist_read): Exit with call to
free_saved () so that character strings do not accumulate.

2005-10-24  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/24416
gfortran.dg/namelist_char_only.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105862 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/namelist_char_only.f90 [new file with mode: 0644]
libgfortran/ChangeLog
libgfortran/io/list_read.c

index fa6e53c..1151980 100644 (file)
@@ -1,3 +1,8 @@
+2005-10-24  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/24416
+       gfortran.dg/namelist_char_only.f90: New test.
+
 2005-10-24  Asher Langton  <langton2@llnl.gov>
 
        PR fortran/17031
diff --git a/gcc/testsuite/gfortran.dg/namelist_char_only.f90 b/gcc/testsuite/gfortran.dg/namelist_char_only.f90
new file mode 100644 (file)
index 0000000..eb2d7ea
--- /dev/null
@@ -0,0 +1,29 @@
+! { dg-do run }
+! { dg-options "-O0" }
+! Test patch for PR24416.f90 - a used to come back from the read with var
+! prepended.
+!
+  IMPLICIT NONE
+  CHARACTER(len=10)  :: var = "hello"
+  character(len=10)  :: a = ""
+  NAMELIST /inx/ var
+
+  OPEN(unit=11, status='scratch')
+  write (11, *) "&INX"
+  write (11, *) "  var = 'goodbye'"
+  write (11, *) "&END"
+  rewind (11)
+
+  READ(11,NML=inx)
+  CLOSE(11)
+
+  OPEN(unit=11, status='scratch')
+  write (11, *) "alls_well"
+  rewind (11)
+
+  READ(11,*) a
+  CLOSE(11)
+
+  if (a /= "alls_well") call abort ()
+
+END
\ No newline at end of file
index 6dd2359..52ad1a9 100644 (file)
@@ -1,9 +1,15 @@
+2005-10-24  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/24416
+       * libgfortran/io/list_read.c (namelist_read): Exit with call to
+       free_saved () so that character strings do not accumulate.
+
 2005-10-23  Jerry DeLisle  <jvdelisle@verizon.net>
 
-        PR libgfortran/24489
-        * io/transfer.c (read_block): Change the order of execution to not read
-        past end-of-record.
-        (read_block_direct): Same change.
+       PR libgfortran/24489
+       * io/transfer.c (read_block): Change the order of execution to not read
+       past end-of-record.
+       (read_block_direct): Same change.
 
 2005-10-23  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
 
index c3510f6..2e1717a 100644 (file)
@@ -2364,13 +2364,14 @@ find_nml_name:
         }
 
    }
-
+  free_saved ();
   return;
 
   /* All namelist error calls return from here */
 
 nml_err_ret:
 
+  free_saved ();
   generate_error (ERROR_READ_VALUE , nml_err_msg);
   return;
 }