mirror of git://gcc.gnu.org/git/gcc.git
re PR libfortran/31210 (I/O of string with (non-constant) zero length)
PR libfortran/31210 * io/transfer.c (transfer_character): Avoid passing a NULL pointer as source to the transfer routines, if the string length is zero. From-SVN: r124428
This commit is contained in:
parent
c531371e87
commit
e50443368c
|
@ -1,3 +1,10 @@
|
|||
2007-05-04 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
|
||||
|
||||
PR libfortran/31210
|
||||
* io/transfer.c (transfer_character): Avoid passing a NULL
|
||||
pointer as source to the transfer routines, if the string length
|
||||
is zero.
|
||||
|
||||
2007-04-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libfortran/31501
|
||||
|
|
|
@ -1401,8 +1401,17 @@ transfer_logical (st_parameter_dt *dtp, void *p, int kind)
|
|||
void
|
||||
transfer_character (st_parameter_dt *dtp, void *p, int len)
|
||||
{
|
||||
static char *empty_string[0];
|
||||
|
||||
if ((dtp->common.flags & IOPARM_LIBRETURN_MASK) != IOPARM_LIBRETURN_OK)
|
||||
return;
|
||||
|
||||
/* Strings of zero length can have p == NULL, which confuses the
|
||||
transfer routines into thinking we need more data elements. To avoid
|
||||
this, we give them a nice pointer. */
|
||||
if (len == 0 && p == NULL)
|
||||
p = empty_string;
|
||||
|
||||
/* Currently we support only 1 byte chars, and the library is a bit
|
||||
confused of character kind vs. length, so we kludge it by setting
|
||||
kind = length. */
|
||||
|
|
Loading…
Reference in New Issue