diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2010-07-19 13:11:54 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2010-07-19 13:11:54 +0000 |
commit | 746e63273fa818385bee5ac91e0965d785015969 (patch) | |
tree | eec8aba9ca8a253c9df3df6becb0502fbf9138c3 /libgfortran/io/unix.c | |
parent | d555b1c77dd2eaf14475a83df44f6c891b5e1d01 (diff) | |
download | gcc-746e63273fa818385bee5ac91e0965d785015969.zip gcc-746e63273fa818385bee5ac91e0965d785015969.tar.gz gcc-746e63273fa818385bee5ac91e0965d785015969.tar.bz2 |
re PR fortran/44953 (FAIL: gfortran.dg/char4_iunit_1.f03 * execution test)
2010-07-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/44953
* io/unix.c (mem_alloc_w4): Return gfc_char4_t instead of char type
pointer. (mem_write4): Remove cast to gfc_char4_t.
* io/transfer.c (write_block): Use a gfc_char4_t pointer.
(memset4): New helper function. (next_record_w): Use new helper
function rather than sset for internal units. Don't attempt to pad
with spaces if it is not needed.
* io/unix.h: Update prototype for mem_alloc_w4.
* io/write.c (memset4): Use gfc_char4_t pointer and chracter type.
Don't use multiply by 4 to compute offset. (memcpy4): Likewise.
(write_default_char4): Use a gfc_char4_t pointer and update memset4
and memcpy calls. (write_a): Likewise. (write_l): Likewise.
(write_boz): Likewise. (write_decimal): Likewise. (write_x): Likewise.
(write_char): Add support for character(kind=4) internal units that
was previously missed. (write_integer): Use a gfc_char4_t pointer and
update memset4 and memcpy calls. (write_character): Likewise.
(write_separator): Add support for character(kind=4) internal units
that was previously missed.
* write_float.def (output_float): Use a gfc_char4_t pointer and
update memset4 and memcpy calls. (write_infnan): Likewise.
(output_float_FMT_G_): Likewise.
From-SVN: r162304
Diffstat (limited to 'libgfortran/io/unix.c')
-rw-r--r-- | libgfortran/io/unix.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c index 65decce..3a795ae 100644 --- a/libgfortran/io/unix.c +++ b/libgfortran/io/unix.c @@ -659,12 +659,13 @@ mem_alloc_w (stream * strm, int * len) } -char * +gfc_char4_t * mem_alloc_w4 (stream * strm, int * len) { unix_stream * s = (unix_stream *) strm; gfc_offset m; gfc_offset where = s->logical_offset; + gfc_char4_t *result = (gfc_char4_t *) s->buffer; m = where + *len; @@ -675,7 +676,7 @@ mem_alloc_w4 (stream * strm, int * len) return NULL; s->logical_offset = m; - return s->buffer + (where - s->buffer_offset) * 4; + return &result[where - s->buffer_offset]; } @@ -744,7 +745,7 @@ mem_write4 (stream * s, const void * buf, ssize_t nwords) gfc_char4_t *p; int nw = nwords; - p = (gfc_char4_t *) mem_alloc_w4 (s, &nw); + p = mem_alloc_w4 (s, &nw); if (p) { while (nw--) |