[Bug libfortran/56737] [4.6/4.7/4.8/4.9 Regression] Wrong I/O result with format cache for Hollerith strings
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Mar 28 10:00:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56737
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
AssignedTo|unassigned at gcc dot |burnus at gcc dot gnu.org
|gnu.org |
--- Comment #4 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-03-28 10:00:42 UTC ---
(In reply to comment #3)
> Note the comment at line 728 of format.c where we must disable format caching
> when we encounter FMT_STRING. The problem is related to saving a pointer to a
> string rather than the string itself. That pointer can go out of scope on
> subsequent I/O operations so caching the format data will not work.
Well, one could save the data. The string is also stored in the hash:
u->format_hash_table[hash].key = xmalloc (dtp->format_len);
memcpy (u->format_hash_table[hash].key, dtp->format, dtp->format_len);
Thus, instead of saving it after the parsing as key, one can duplicate the
string and store it as dtp->format before parsing the string.
That's what I do in the patch, submitted at:
http://gcc.gnu.org/ml/fortran/2013-03/msg00155.html
More information about the Gcc-bugs
mailing list