mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
Revert r111321. This doesn't fix a problem.
llvm-svn: 111339
This commit is contained in:
parent
ba9f26fade
commit
95cda1f1ef
@ -415,32 +415,16 @@ raw_fd_ostream::raw_fd_ostream(const char *Filename, std::string &ErrorInfo,
|
||||
|
||||
raw_fd_ostream::~raw_fd_ostream() {
|
||||
if (FD < 0) return;
|
||||
if (!ShouldClose) {
|
||||
flush();
|
||||
return;
|
||||
}
|
||||
|
||||
bool HadError = has_error();
|
||||
close();
|
||||
|
||||
// If we had a failure closing the stream, there is no way for the client to
|
||||
// handle it, just eat the failure.
|
||||
if (!HadError && has_error())
|
||||
clear_error();
|
||||
}
|
||||
|
||||
void raw_fd_ostream::close() {
|
||||
assert(ShouldClose);
|
||||
ShouldClose = false;
|
||||
flush();
|
||||
while (::close(FD) != 0)
|
||||
if (errno != EINTR) {
|
||||
error_detected();
|
||||
break;
|
||||
}
|
||||
FD = -1;
|
||||
if (ShouldClose)
|
||||
while (::close(FD) != 0)
|
||||
if (errno != EINTR) {
|
||||
error_detected();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void raw_fd_ostream::write_impl(const char *Ptr, size_t Size) {
|
||||
assert(FD >= 0 && "File already closed.");
|
||||
pos += Size;
|
||||
@ -477,6 +461,18 @@ void raw_fd_ostream::write_impl(const char *Ptr, size_t Size) {
|
||||
} while (Size > 0);
|
||||
}
|
||||
|
||||
void raw_fd_ostream::close() {
|
||||
assert(ShouldClose);
|
||||
ShouldClose = false;
|
||||
flush();
|
||||
while (::close(FD) != 0)
|
||||
if (errno != EINTR) {
|
||||
error_detected();
|
||||
break;
|
||||
}
|
||||
FD = -1;
|
||||
}
|
||||
|
||||
uint64_t raw_fd_ostream::seek(uint64_t off) {
|
||||
flush();
|
||||
pos = ::lseek(FD, off, SEEK_SET);
|
||||
|
Loading…
Reference in New Issue
Block a user