OSDN Git Service

Fix bug that causes testsuite failure in namelist_13.f90 on some systems.
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Apr 2005 12:38:08 +0000 (12:38 +0000)
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 23 Apr 2005 12:38:08 +0000 (12:38 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@98610 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/io/list_read.c
libgfortran/io/write.c

index 66ecfd0..027ad27 100644 (file)
@@ -1,3 +1,12 @@
+2005-04-18 Paul Thomas <pault@gcc.gnu.org>
+          Jerry DeLisle <jvdelisle@verizon.net> 
+
+       * io/write.c (nml_write_obj): Provide 1 more byte for ext_name.
+       * io/list_read.c (nml_get_obj_data): Put extra brackets in get_mem
+       call for ext_name.  These fix the bug reported by Jerry DeLisle to
+       the fortran list and are based on his suggested fix.
+
+
 2005-04-22  Thomas Koenig  <Thomas.Koenig@online.de>
 
        PR libfortran/20074
index bc592dd..28def56 100644 (file)
@@ -2107,8 +2107,9 @@ get_name:
 
   if (component_flag)
     {
-      ext_name = (char*)get_mem (strlen (root_nl->var_name) +
-                 saved_string ? strlen (saved_string) : 0 + 1);
+      ext_name = (char*)get_mem (strlen (root_nl->var_name)
+                                 + (saved_string ? strlen (saved_string) : 0)
+                                 + 1);
       strcpy (ext_name, root_nl->var_name);
       strcat (ext_name, saved_string);
       nl = find_nml_node (ext_name);
index c57ebac..faf8b90 100644 (file)
@@ -1477,7 +1477,8 @@ nml_write_obj (namelist_info * obj, index_type offset,
              ext_name = (char*)get_mem ( (base_name ? strlen (base_name) : 0)
                                        + (base ? strlen (base->var_name) : 0)
                                        + strlen (obj->var_name)
-                                       + obj->var_rank * NML_DIGITS);
+                                       + obj->var_rank * NML_DIGITS
+                                       + 1);
 
              strcpy(ext_name, base_name ? base_name : "");
              clen = base ? strlen (base->var_name) : 0;