summaryrefslogtreecommitdiff
path: root/libgfortran/io/write.c
diff options
context:
space:
mode:
authorpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-18 01:20:06 +0000
committerpbrook <pbrook@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-18 01:20:06 +0000
commit2cd58ad70f2065e7717dff301b3a65349d1a9be0 (patch)
treeee99eee77195e9d423d2ec6b517c2cf6ab9bae94 /libgfortran/io/write.c
parent30aea172c1db83aa6b99622d0042f2085c46879c (diff)
2004-08-18 Victor Leikehman <lei@il.ibm.com>
PR fortran/13278 * trans-io.c (transfer_namelist_element): New. Recursively handle derived-type variables. Pass string lengths. (build_dt): Code moved to build_namelist, with some changes and additions. (gfc_build_io_library_fndecls): Declare the fifth argument in st_set_nml_var_char -- string_length. libgfortran/ * io/transfer.c (st_set_nml_var) * io/write.c (namelist_write): Allow var_name and var_name_len to be null. For strings, use string_length field instead of len. * io/io.h (struct namelist_type): New field string_length. (st_set_nml_var_char): New argument string_length. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86166 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran/io/write.c')
-rw-r--r--libgfortran/io/write.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c
index 1af8537d7512..67c769ae9204 100644
--- a/libgfortran/io/write.c
+++ b/libgfortran/io/write.c
@@ -1122,8 +1122,11 @@ namelist_write (void)
num ++;
t2 = t1;
t1 = t1->next;
- write_character(t2->var_name, strlen(t2->var_name));
- write_character("=",1);
+ if (t2->var_name)
+ {
+ write_character(t2->var_name, strlen(t2->var_name));
+ write_character("=",1);
+ }
len = t2->len;
p = t2->mem_pos;
switch (t2->type)
@@ -1135,7 +1138,7 @@ namelist_write (void)
write_logical (p, len);
break;
case BT_CHARACTER:
- write_character (p, len);
+ write_character (p, t2->string_length);
break;
case BT_REAL:
write_real (p, len);