Hi Dean,

Was this change approved for the 2.0 branch, or did you commit it to the
branch by accident?

Also, your patch was not complete; Stream.Length can/will also throw a
NotSupportedException when the stream is unseekable. I'll commit a slighty
modified version to SVN HEAD in a few minutes.

Gert

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Dean Brettle
([EMAIL PROTECTED])
Sent: dinsdag 22 juli 2008 20:21
To: [EMAIL PROTECTED]; [EMAIL PROTECTED];
[EMAIL PROTECTED]
Subject: [Mono-patches] r108492 - in branches/mono-2-0/mcs/class/System.Web:
System.Web.UI Test/System.Web.UI

Author: deanb
Date: 2008-07-22 14:20:47 -0400 (Tue, 22 Jul 2008)
New Revision: 108492

Modified:
   branches/mono-2-0/mcs/class/System.Web/System.Web.UI/ChangeLog
   branches/mono-2-0/mcs/class/System.Web/System.Web.UI/LosFormatter.cs
   branches/mono-2-0/mcs/class/System.Web/Test/System.Web.UI/ChangeLog
 
branches/mono-2-0/mcs/class/System.Web/Test/System.Web.UI/LosFormatterTest.c
s
Log:
++ Test/System.Web.UI/ChangeLog (working copy)

        * LosFormatterTest.cs: added test for bug 411115 where passing an
        unseekable stream to LosFormatter.Deserialize() causes an exception.

++ System.Web.UI/ChangeLog      (working copy)

        * LosFormatter.cs: fixed bug 411115 where passing an unseekable 
        stream to LosFormatter.Deserialize() causes an exception.



Modified: branches/mono-2-0/mcs/class/System.Web/System.Web.UI/ChangeLog
===================================================================
--- branches/mono-2-0/mcs/class/System.Web/System.Web.UI/ChangeLog
2008-07-22 17:35:55 UTC (rev 108491)
+++ branches/mono-2-0/mcs/class/System.Web/System.Web.UI/ChangeLog
2008-07-22 18:20:47 UTC (rev 108492)
@@ -1,3 +1,8 @@
+2008-07-22  Dean Brettle <[EMAIL PROTECTED]>
+
+       * LosFormatter.cs: fixed bug 411115 where passing an unseekable 
+       stream to LosFormatter.Deserialize() causes an exception.
+
 2008-07-14  Marek Habersack  <[EMAIL PROTECTED]>
 
        * Page.cs: fix the failing tests by moving the form

Modified:
branches/mono-2-0/mcs/class/System.Web/System.Web.UI/LosFormatter.cs
===================================================================
--- branches/mono-2-0/mcs/class/System.Web/System.Web.UI/LosFormatter.cs
2008-07-22 17:35:55 UTC (rev 108491)
+++ branches/mono-2-0/mcs/class/System.Web/System.Web.UI/LosFormatter.cs
2008-07-22 18:20:47 UTC (rev 108492)
@@ -70,8 +70,10 @@
                {
                        if (stream == null)
                                throw new ArgumentNullException ("stream");
-
-                       byte [] bytes = new byte [stream.Length >= 0 ?
stream.Length : 2048];
+                       long streamLength = -1;
+                       if (stream.CanSeek)
+                               streamLength = stream.Length;
+                       byte [] bytes = new byte [streamLength >= 0 ?
streamLength : 2048];
                        MemoryStream ms = null;
                        if ((stream is MemoryStream) && stream.Position ==
0) {
                                // We save allocating a new stream and
reading in this case.

Modified:
branches/mono-2-0/mcs/class/System.Web/Test/System.Web.UI/ChangeLog
===================================================================
--- branches/mono-2-0/mcs/class/System.Web/Test/System.Web.UI/ChangeLog
2008-07-22 17:35:55 UTC (rev 108491)
+++ branches/mono-2-0/mcs/class/System.Web/Test/System.Web.UI/ChangeLog
2008-07-22 18:20:47 UTC (rev 108492)
@@ -1,3 +1,8 @@
+2008-07-22  Dean Brettle <[EMAIL PROTECTED]>
+
+       * LosFormatterTest.cs: added test for bug 411115 where passing an
+       unseekable stream to LosFormatter.Deserialize() causes an exception.
+
 2008-06-14  Gert Driesen <[EMAIL PROTECTED]>
 
        * PageTest.cs: Fixed compile error on MS (as it does not list the

Modified:
branches/mono-2-0/mcs/class/System.Web/Test/System.Web.UI/LosFormatterTest.c
s
===================================================================
---
branches/mono-2-0/mcs/class/System.Web/Test/System.Web.UI/LosFormatterTest.c
s       2008-07-22 17:35:55 UTC (rev 108491)
+++
branches/mono-2-0/mcs/class/System.Web/Test/System.Web.UI/LosFormatterTest.c
s       2008-07-22 18:20:47 UTC (rev 108492)
@@ -146,5 +146,34 @@
                        Assert.AreEqual (string.Empty, s1, "#2");
 #endif
                }
+
+               [Test] // bug #4111115
+               public void Deserialize_Unseekable ()
+               {
+                       string s = "Hello world";
+                       LosFormatter lf = new LosFormatter ();
+                       MemoryStream ms = new MemoryStream ();
+                       lf.Serialize (ms, s);
+                       byte[] serializedBytes = ms.ToArray();
+                       UnseekableMemoryStream ums 
+                               = new
UnseekableMemoryStream(serializedBytes, 0, serializedBytes.Length, false,
true);
+                       string s2 = lf.Deserialize (ums) as string;
+                       Assert.IsNotNull (s2, "#1");
+                       Assert.AreEqual (s, s2, "#2");
+               }
+
+               class UnseekableMemoryStream : MemoryStream
+               {
+                       public UnseekableMemoryStream(byte[] byteArray, int
index, int count, 
+                                                     bool writable, bool
publiclyVisible) 
+                               : base(byteArray, index, count, writable,
publiclyVisible)
+                       {
+                       }
+                       
+                       public override bool CanSeek {
+                               get { return false; }
+                       }                               
+               }
+
        }
 }

_______________________________________________
Mono-patches maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-patches

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to