Commit e5044336 by Francois-Xavier Coudert Committed by François-Xavier Coudert

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
parent c531371e
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. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment