[System] SocketAsyncEventArgs::Dispose does not free any managed resources. Fixes...
authorMarek Safar <marek.safar@gmail.com>
Thu, 13 Oct 2016 14:43:38 +0000 (16:43 +0200)
committerMarek Safar <marek.safar@gmail.com>
Thu, 13 Oct 2016 14:44:39 +0000 (16:44 +0200)
mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs
mcs/class/System/Test/System.Net.Sockets/SocketAsyncEventArgsTest.cs

index 438d4bc31e9a3dcf97f763d3ba444272030d218d..e057021f9a73ce49e43049df46a8ac68b4cab9f9 100644 (file)
@@ -177,13 +177,6 @@ namespace System.Net.Sockets
 
                        if (disposing && in_progress != 0)
                                return;
-
-                       AcceptSocket = null;
-                       Buffer = null;
-                       BufferList = null;
-                       RemoteEndPoint = null;
-                       UserToken = null;
-                       SendPacketsElements = null;
                }
 
                public void Dispose ()
index f0c29764ae9ec6f78d5dae84a80e76e902e4cf70..935aa77bcdf7e46f7d4ca959825931f219cebf6b 100644 (file)
@@ -247,6 +247,25 @@ namespace MonoTests.System.Net.Sockets {
                        SocketAsyncEventArgsPoker saea = new SocketAsyncEventArgsPoker ();
                        saea.OnCompleted_ (null);
                }
+
+               [Test]
+               public void TransparentDispose ()
+               {
+                       var buffer = new byte[5];
+                       var elements = new SendPacketsElement[2];
+                       var utoken = new object();
+
+                       var saea = new SocketAsyncEventArgs();
+                       saea.SetBuffer(buffer, 0, 3);
+                       saea.SendPacketsElements = elements;
+                       saea.UserToken = utoken;
+
+                       saea.Dispose();
+
+                       Assert.AreEqual (buffer, saea.Buffer);
+                       Assert.AreEqual (elements, saea.SendPacketsElements);
+                       Assert.AreEqual (utoken, saea.UserToken);
+               }
        }
 }