Make outs() close its file when its stream is destructed, so that
authorDan Gohman <gohman@apple.com>
Fri, 20 Aug 2010 16:44:56 +0000 (16:44 +0000)
committerDan Gohman <gohman@apple.com>
Fri, 20 Aug 2010 16:44:56 +0000 (16:44 +0000)
pending output errors are detected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111643 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/raw_ostream.cpp

index 9915b0c8fd2dbca1c300dca09d2150726ac25e41..371dc8b255631ae53b65d0666df3057e750794cb 100644 (file)
@@ -540,14 +540,16 @@ bool raw_fd_ostream::is_displayed() const {
 }
 
 //===----------------------------------------------------------------------===//
-//  raw_stdout/err_ostream
+//  outs(), errs(), nulls()
 //===----------------------------------------------------------------------===//
 
 /// outs() - This returns a reference to a raw_ostream for standard output.
 /// Use it like: outs() << "foo" << "bar";
 raw_ostream &llvm::outs() {
   // Set buffer settings to model stdout behavior.
-  static raw_fd_ostream S(STDOUT_FILENO, false);
+  // Delete the file descriptor when the program exists, forcing error
+  // detection. If you don't want this behavior, don't use outs().
+  static raw_fd_ostream S(STDOUT_FILENO, true);
   return S;
 }