Added raw_fd_ostream::close().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58052 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Support/raw_ostream.cpp b/lib/Support/raw_ostream.cpp
index f3a53a5..a4c2936 100644
--- a/lib/Support/raw_ostream.cpp
+++ b/lib/Support/raw_ostream.cpp
@@ -220,17 +220,28 @@
}
raw_fd_ostream::~raw_fd_ostream() {
- flush();
- if (ShouldClose)
- close(FD);
+ if (FD >= 0) {
+ flush();
+ if (ShouldClose)
+ ::close(FD);
+ }
}
void raw_fd_ostream::flush_impl() {
+ assert (FD >= 0 && "File already closed.");
if (OutBufCur-OutBufStart)
::write(FD, OutBufStart, OutBufCur-OutBufStart);
HandleFlush();
}
+void raw_fd_ostream::close() {
+ assert (ShouldClose);
+ ShouldClose = false;
+ flush();
+ ::close(FD);
+ FD = -1;
+}
+
//===----------------------------------------------------------------------===//
// raw_stdout/err_ostream
//===----------------------------------------------------------------------===//