<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60509>60509</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
ofstream.rdbuf()->pubsetbuf(nullptr, 0) do not enables "auto-flush" mode
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
morozyto
</td>
</tr>
</table>
<pre>
Hi!
I have got this code:
```cpp
#include <fstream>
#include <vector>
int main() {
const std::string path = "/tmp/some_random_path"; // this file do not exist before running of program
std::ofstream file_output;
file_output.rdbuf()->pubsetbuf(nullptr, 0);
file_output.open(path);
if (!file_output.good()) {
return 1;
}
file_output.write("abc", 3);
if (!file_output.good()) {
return 2;
}
std::ifstream file_input{path, std::ios::binary};
if (!file_input.is_open()) {
return 3;
}
file_input.peek();
if (file_input.eof()) {
return 4; // libc++
}
return 0; // libstdc++11
}
```
I tried to compile it with againt libstdc++11 ( clang++ main.cpp ) and against libc++ (clang++ -stdlib=libc++ main.cpp). I expect success return code for both libc++ and libstdc++11 (because of expectation of no-buffering with `rdbuf()->pubsetbuf(nullptr, 0)`), but it's not work for libc++. Is it valid?
My specs:
Ubuntu Description: Ubuntu 20.04.4 LTS Release: 20.04 Codename: focal
Ubuntu clang version 15.0.7
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/10
Selected multilib: .;@m64
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU1v4zgP_jXKhYghy_kYH3Jok_H7DrB72Zk9F7JEO9qRJUOi-rG_fiE7adyZFosBtjDUmCIfPXxMUjJG0zvEA9ves-1pJROdfTgMPvi_X8ivWq9fDv83TJSMnxi_W65f4CwfEXpPQGcTQXmNrLq67Pj8qHG8WERlnLJJI7Dq2EUKKAdWfX5v9xEV-XDbnFbjCAZpHBOfmKiB7e9nOwCA8i4SRNKZQHUXKRjXwyjpDKw6AROCiYaGkYkm-gEfgnTaDw_ZIe9V98BEw0QzZ9IZi6A9OE-AzyYStNj5gBCScxnYdzAG3wc53Ci8Hu4vuU0wDz7RmIhVV7ILYxF0m7o5nTWrPo-pjUizySVrRwpMHIEzUb8f70fMasxZLHwAwHQwAZdL_957PR_3k4CM1wEpBQflGxy2P91ellhPwRBOYEK2ahL4CNV_R0O8T2O53iQ3byQ3Liu-v591OS7cfJx_tMbJ8JJBPyY7oRQmPlxUfo9u_rvwrT6WbfnlZtQR8fsF8mcCCz_03b-fvMnle61fa_LHuM_PR-ItQvmi8q1pI-lLcHnt99fQaz-_nQAUDGogD8oPY-4aQ_Bk6Ayyl7lffwDN6YGy0vWzZernQo0j5ASl03NcpEUeOWYZso6krWlZdVr4XHGYqAv4Avg8oiKISSmM8ZptHlDQ-QCtp_PyhHzwO0xbVDJFzN0-A0oy3uVX59dt6jqcpsyUL9vxX-jm3bSKI7SJwBAT-zgNmycfvk8Mb-QK-BKzqo_SGs2qZqn_7y8QR1Txder-2SZHCU4YVTBjZsuqO7hYBS_4ptjAb9--wh9oUcY8rmczHL1GJ4fJ0nkl7RvASX94xBCzAOW24MV-dvgmQ4-Uo54_7R52m_Wo1ta49LzuXbpU_rdzQKlh8Bpt9hx9NM-XCnKRpLWoTybkLSaaFAMTTWvcJforWlSEGv53PIKZ_eU1taU_E01RMNHk4hBNrxQTzYXUKyMmmpL_CDwkS2YqqTsockNu-LDbrPSh0nVVyxUeyt1-uxFVXder86Hju27foeha3G073Jei3Je4k92Go9RSrMxBcFFxwauyrKqyLqSqdNmWGrtPdYucsw3HQRpbWPs4FD70KxNjwsOOb3m9srJFG6cbWQiHTzBt5gm7Pa3CIces29RHtuHWRIo3FDJk8XC9f37henm97JxsLcZ8X8pEft3ZFPMFOX27VQr2cCYap3qbhkZv6JzaQvkh624fr__WY_B_oSImmol8ZKKZkvsnAAD__6XmfM8">