Ver código fonte

do not nullify deflateStream

svn path=/trunk/mcs/; revision=138301
Gonzalo Paniagua Javier 16 anos atrás
pai
commit
faaad5d9b0

+ 5 - 3
mcs/class/System/System.IO.Compression/DeflateStream.cs

@@ -37,6 +37,7 @@ using System.Runtime.Remoting.Messaging;
 namespace System.IO.Compression {
 	public class DeflateStream : Stream
 	{
+		const int BufferSize = 4096;
 		delegate int UnmanagedReadOrWrite (IntPtr buffer, int length);
 		delegate int ReadMethod (byte[] array, int offset, int count);
 		delegate void WriteMethod (byte[] array, int offset, int count);
@@ -109,9 +110,10 @@ namespace System.IO.Compression {
 			int n = 1;
 			while (length > 0 && n > 0) {
 				if (io_buffer == null)
-					io_buffer = new byte [4096];
+					io_buffer = new byte [BufferSize];
 
-				n = base_stream.Read (io_buffer, 0, io_buffer.Length);
+				int count = Math.Min (length, io_buffer.Length);
+				n = base_stream.Read (io_buffer, 0, count);
 				if (n > 0) {
 					Marshal.Copy (io_buffer, 0, buffer, n);
 					unsafe {
@@ -129,7 +131,7 @@ namespace System.IO.Compression {
 			int total = 0;
 			while (length > 0) {
 				if (io_buffer == null)
-					io_buffer = new byte [4096];
+					io_buffer = new byte [BufferSize];
 
 				int count = Math.Min (length, io_buffer.Length);
 				Marshal.Copy (buffer, io_buffer, 0, count);

+ 2 - 6
mcs/class/System/System.IO.Compression/GzipStream.cs

@@ -50,12 +50,8 @@ namespace System.IO.Compression {
 
 		protected override void Dispose (bool disposing)
 		{
-			if (disposing) {
-				if (deflateStream != null) {
-					deflateStream.Dispose ();
-					deflateStream = null;
-				}
-			}
+			if (disposing)
+				deflateStream.Dispose ();
 			base.Dispose (disposing);
 		}