re PR libfortran/21324 (#undef GFC_CLEAR_MEMORY causes testsuite failures)
authorThomas Koenig <Thomas.Koenig@online.de>
Thu, 12 May 2005 17:50:33 +0000 (17:50 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Thu, 12 May 2005 17:50:33 +0000 (17:50 +0000)
2005-05-12  Thomas Koenig  <Thomas.Koenig@online.de>

        PR libfortran/21324
        * runtime/memory.c:  Don't define GFC_CLEAR_MEMORY (it's a
        performance hog).
        * io/open.c (new_unit): Zero freshly allocated memory for
        unit structure.
        * io/unit.c (init_units):  Zero freshly allocated memory for
        STDIN, STDOUT and STDERR.
        * io/unix.c (open_internal):  Zero freshly allocated memory
        for unix_stream.
        (fd_to_stream):  Likewise.

From-SVN: r99619

libgfortran/ChangeLog
libgfortran/io/open.c
libgfortran/io/unit.c
libgfortran/io/unix.c
libgfortran/runtime/memory.c

index eded92e..353ac9a 100644 (file)
@@ -1,3 +1,16 @@
+2005-05-12  Thomas Koenig  <Thomas.Koenig@online.de>
+
+       PR libfortran/21324
+       * runtime/memory.c:  Don't define GFC_CLEAR_MEMORY (it's a
+       performance hog).
+       * io/open.c (new_unit): Zero freshly allocated memory for
+       unit structure.
+       * io/unit.c (init_units):  Zero freshly allocated memory for
+       STDIN, STDOUT and STDERR.
+       * io/unix.c (open_internal):  Zero freshly allocated memory
+       for unix_stream.
+       (fd_to_stream):  Likewise.
+
 2005-05-11  Bud Davis  <bdavis@gfortran.org>
 
        PR fortran/19478
index 97bf6e4..f579f1f 100644 (file)
@@ -351,6 +351,7 @@ new_unit (unit_flags * flags)
   /* Create the unit structure.  */
 
   u = get_mem (sizeof (gfc_unit) + ioparm.file_len);
+  memset (u, '\0', sizeof (gfc_unit) + ioparm.file_len);
 
   u->unit_number = ioparm.unit;
   u->s = s;
index ae0771f..f0d8dbe 100644 (file)
@@ -295,6 +295,7 @@ init_units (void)
   if (options.stdin_unit >= 0)
     {                          /* STDIN */
       u = get_mem (sizeof (gfc_unit));
+      memset (u, '\0', sizeof (gfc_unit));
 
       u->unit_number = options.stdin_unit;
       u->s = input_stream ();
@@ -316,6 +317,7 @@ init_units (void)
   if (options.stdout_unit >= 0)
     {                          /* STDOUT */
       u = get_mem (sizeof (gfc_unit));
+      memset (u, '\0', sizeof (gfc_unit));
 
       u->unit_number = options.stdout_unit;
       u->s = output_stream ();
@@ -337,6 +339,7 @@ init_units (void)
   if (options.stderr_unit >= 0)
     {                          /* STDERR */
       u = get_mem (sizeof (gfc_unit));
+      memset (u, '\0', sizeof (gfc_unit));
 
       u->unit_number = options.stderr_unit;
       u->s = error_stream ();
index 92eea53..2d8286c 100644 (file)
@@ -872,6 +872,7 @@ open_internal (char *base, int length)
   unix_stream *s;
 
   s = get_mem (sizeof (unix_stream));
+  memset (s, '\0', sizeof (unix_stream));
 
   s->buffer = base;
   s->buffer_offset = 0;
@@ -900,6 +901,7 @@ fd_to_stream (int fd, int prot, int avoid_mmap)
   unix_stream *s;
 
   s = get_mem (sizeof (unix_stream));
+  memset (s, '\0', sizeof (unix_stream));
 
   s->fd = fd;
   s->buffer_offset = 0;
index 8b8dca8..ce2dc91 100644 (file)
@@ -36,7 +36,7 @@ Boston, MA 02111-1307, USA.  */
    return memory that is guaranteed to be set to zero.  This can have
    a severe efficiency penalty, so it should never be set if good
    performance is desired, but it can help when you're debugging code.  */
-#define GFC_CLEAR_MEMORY
+/* #define GFC_CLEAR_MEMORY */
 
 /* If GFC_CHECK_MEMORY is defined, we do some sanity checks at runtime.
    This causes small overhead, but again, it also helps debugging.  */