2005-08-11 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / corlib / System.IO / FileStream.cs
index bc92a004b35ac2afee8f17cafd9eaa35b6b6b022..945f995d682a83bf69cd8e2612f102eae1dcd7c8 100644 (file)
@@ -374,6 +374,14 @@ namespace System.IO
                        if (buf_offset == buf_size)
                                FlushBuffer ();
 
+                       if (buf_size == 0) { // No buffering
+                               buf [0] = value;
+                               buf_dirty = true;
+                               buf_length = 1;
+                               FlushBuffer ();
+                               return;
+                       }
+
                        buf [buf_offset ++] = value;
                        if (buf_offset > buf_length)
                                buf_length = buf_offset;
@@ -585,8 +593,6 @@ namespace System.IO
                        if (!async)
                                return base.BeginWrite (buffer, offset, count, cback, state);
 
-                       byte [] bytes;
-                       int buffered = 0;
                        FileStreamAsyncResult result = new FileStreamAsyncResult (cback, state);
                        result.BytesRead = -1;
                        result.Count = count;
@@ -595,13 +601,9 @@ namespace System.IO
                        if (buf_dirty) {
                                MemoryStream ms = new MemoryStream ();
                                FlushBufferToStream (ms);
-                               buffered = (int) ms.Length;
                                ms.Write (buffer, offset, count);
-                               bytes = ms.GetBuffer ();
                                offset = 0;
                                count = (int) ms.Length;
-                       } else {
-                               bytes = buffer;
                        }
 
                        WriteDelegate w = new WriteDelegate (WriteInternal);