Browse Source

[corlib] Use public TextWriter.Synchronized for Console synchronization and leave stream closing handling to underlying stream

Marek Safar 11 years ago
parent
commit
ce4e2497be

+ 1 - 1
mcs/class/corlib/System.IO/UnexceptionalStreamWriter.cs

@@ -52,7 +52,7 @@ namespace System.IO {
 */
 		public UnexceptionalStreamWriter (Stream stream,
 						  Encoding encoding)
-			: base (stream, encoding)
+			: base (stream, encoding, DefaultBufferSize, true)
 		{
 		}
 /*

+ 2 - 2
mcs/class/corlib/System/CStreamWriter.cs

@@ -39,8 +39,8 @@ namespace System.IO {
 	class CStreamWriter : StreamWriter {
 		TermInfoDriver driver;
 
-		public CStreamWriter (Stream stream, Encoding encoding)
-			: base (stream, encoding)
+		public CStreamWriter (Stream stream, Encoding encoding, bool leaveOpen)
+			: base (stream, encoding, DefaultBufferSize, leaveOpen)
 		{
 			driver = (TermInfoDriver) ConsoleDriver.driver;
 		}

+ 6 - 6
mcs/class/corlib/System/Console.cs

@@ -141,13 +141,13 @@ namespace System
 		{
 #if !NET_2_1
 			if (!Environment.IsRunningOnWindows && ConsoleDriver.IsConsole) {
-				StreamWriter w = new CStreamWriter (OpenStandardOutput (0), outputEncoding);
+				StreamWriter w = new CStreamWriter (OpenStandardOutput (0), outputEncoding, true);
 				w.AutoFlush = true;
-				stdout = TextWriter.Synchronized (w, true);
+				stdout = TextWriter.Synchronized (w);
 
-				w = new CStreamWriter (OpenStandardOutput (0), outputEncoding);
+				w = new CStreamWriter (OpenStandardOutput (0), outputEncoding, true);
 				w.AutoFlush = true;
-				stderr = TextWriter.Synchronized (w, true);
+				stderr = TextWriter.Synchronized (w);
 				
 				stdin = new CStreamReader (OpenStandardInput (0), inputEncoding);
 			} else {
@@ -161,7 +161,7 @@ namespace System
 				stdout = new UnexceptionalStreamWriter (OpenStandardOutput (0), outputEncoding);
 				((StreamWriter)stdout).AutoFlush = true;
 #endif
-				stdout = TextWriter.Synchronized (stdout, true);
+				stdout = TextWriter.Synchronized (stdout);
 
 #if MONOTOUCH && FULL_AOT_RUNTIME
 				stderr = new NSLogWriter ();
@@ -169,7 +169,7 @@ namespace System
 				stderr = new UnexceptionalStreamWriter (OpenStandardError (0), outputEncoding); 
 				((StreamWriter)stderr).AutoFlush = true;
 #endif
-				stderr = TextWriter.Synchronized (stderr, true);
+				stderr = TextWriter.Synchronized (stderr);
 
 				stdin = new UnexceptionalStreamReader (OpenStandardInput (0), inputEncoding);
 				stdin = TextReader.Synchronized (stdin);

+ 1 - 1
mcs/class/corlib/System/TermInfoDriver.cs

@@ -176,7 +176,7 @@ namespace System {
 
 			if (!(Console.stdout is CStreamWriter)) {
 				// Application set its own stdout, we need a reference to the real stdout
-				stdout = new CStreamWriter (Console.OpenStandardOutput (0), Console.OutputEncoding);
+				stdout = new CStreamWriter (Console.OpenStandardOutput (0), Console.OutputEncoding, false);
 				((StreamWriter) stdout).AutoFlush = true;
 			} else {
 				stdout = (CStreamWriter) Console.stdout;