mirror of
https://github.com/darlinghq/darling-libcxx.git
synced 2024-11-27 05:40:48 +00:00
Set the buffer of an fstream to empty when the underlying file is closed. This 'fixes' PR#38052 - std::fstream still good after closing and updating content.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@350603 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
354589c472
commit
11a8815e5a
@ -702,6 +702,7 @@ basic_filebuf<_CharT, _Traits>::close()
|
||||
__file_ = 0;
|
||||
else
|
||||
__rt = 0;
|
||||
setbuf(0, 0);
|
||||
}
|
||||
return __rt;
|
||||
}
|
||||
|
@ -0,0 +1,35 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is dual licensed under the MIT and the University of Illinois Open
|
||||
// Source Licenses. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
// <fstream>
|
||||
|
||||
// template <class charT, class traits = char_traits<charT> >
|
||||
// class basic_fstream
|
||||
|
||||
// close();
|
||||
|
||||
// Inspired by PR#38052 - std::fstream still good after closing and updating content
|
||||
|
||||
#include <fstream>
|
||||
#include <cassert>
|
||||
#include "platform_support.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
std::string temp = get_temp_file_name();
|
||||
|
||||
std::fstream ofs(temp, std::ios::out | std::ios::trunc);
|
||||
ofs << "Hello, World!\n";
|
||||
assert( ofs.good());
|
||||
ofs.close();
|
||||
assert( ofs.good());
|
||||
ofs << "Hello, World!\n";
|
||||
assert(!ofs.good());
|
||||
|
||||
std::remove(temp.c_str());
|
||||
}
|
Loading…
Reference in New Issue
Block a user