[LLVMbugs] [Bug 14074] New: std::filebuf:sputn fails to write 0xFF as the first byte into the filebuf, irregardless of the openmode
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Fri Oct 12 14:13:35 PDT 2012
http://llvm.org/bugs/show_bug.cgi?id=14074
Bug #: 14074
Summary: std::filebuf:sputn fails to write 0xFF as the first
byte into the filebuf, irregardless of the openmode
Product: libc++
Version: unspecified
Platform: Macintosh
OS/Version: MacOS X
Status: NEW
Severity: normal
Priority: P
Component: All Bugs
AssignedTo: hhinnant at apple.com
ReportedBy: andrew at spacemonkey.com
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
std::filebuf::sputn fails to write 0xFF as the first byte into the buffer. It
however reports the byte as written via the return code.
The openmode does not affect the behavior.
This breaks libraries which use the filebuf directly (i.e.
boost::iostreams::device::file_sink).
This works correctly using libstdc++ as well as the standard library shipped
with Visual C++.
Steps:
1) Instantiate a filebuf
2) Call sputn with a buffer starting with 0xFF
Observed behavior:
sputn() returns the byte as having been written but no byte is put into the
buffer.
Expected behavior:
The byte should be written into the buffer.
$ cat badfilebuf.cpp
#include <fstream>
#include <iostream>
int main() {
std::filebuf buf;
buf.open("buf", std::ios::out | std::ios::binary);
std::cout << buf.sputn("\xFF", 1) << " bytes written" << std::endl;
buf.close();
return 0;
}
$ clang++ badfilebuf.cpp
$ ./a.out
1 bytes written
$ ls -l buf
-rw-r--r-- 1 andrew staff 1 Oct 12 15:08 buf
$ clang++ badfilebuf.cpp -stdlib=libc++
$ ./a.out
1 bytes written
$ ls -l buf
-rw-r--r-- 1 andrew staff 0 Oct 12 15:08 buf
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list