[Bug libstdc++/98001] ext/stdio_filebuf/char/79820.cc is broken
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Nov 26 11:24:17 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98001
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Yes, when the filebuf is given a FILE* it doesn't own it, and so the destructor
doesn't touch it:
__basic_file<char>*
__basic_file<char>::close()
{
__basic_file* __ret = static_cast<__basic_file*>(NULL);
if (this->is_open())
{
int __err = 0;
if (_M_cfile_created)
__err = fclose(_M_cfile);
_M_cfile = 0;
if (!__err)
__ret = this;
}
return __ret;
}
_M_cfile_created is only true when it's opened using a filename (because it
calls fopen) or a file descriptor (because it calls fdopen).
More information about the Gcc-bugs
mailing list