[Mono-bugs] [Bug 550960] New: Dataset binary serialization fails if first row contains nulls.

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Thu Oct 29 07:03:11 EDT 2009


http://bugzilla.novell.com/show_bug.cgi?id=550960


           Summary: Dataset binary serialization fails if first row
                    contains nulls.
    Classification: Mono
           Product: Mono: Class Libraries
           Version: 2.4.x
          Platform: x86-64
        OS/Version: RHEL 5
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: Sys.Data
        AssignedTo: bnc-blr-team-mono at forge.provo.novell.com
        ReportedBy: stefano.sapienti at apsystems.it
         QAContact: mono-bugs at lists.ximian.com
          Found By: ---


User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.14)
Gecko/2009082707 Firefox/3.0.14 (.NET CLR 3.5.30729)

Making binary serialization of a typed dataset that contains in the first row
null values result in a type cast exception. It works on MS.NET

Reproducible: Always

Steps to Reproduce:
1. Create a dataset
            DataSet outputs = new DataSet();
            DataTable dt = outputs.Tables.Add();
2. Add 2 field to datatable
            dt.Columns.Add("field1", typeof(string));
            dt.Columns.Add("field2", typeof(string));
3. Add 2 rows to datatable, first one with null values
            dt.Rows.Add(new object[] { null,"a"});
            dt.Rows.Add(new object[] { "a","b"});
4. Binary Serialize the DataSet
                outputs.RemotingFormat = SerializationFormat.Binary;
                System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
                using (System.IO.MemoryStream ms = new
System.IO.MemoryStream()) {
                    bf.Serialize(ms, outputs);
                    ms.ToArray();
                }
Actual Results:  
System.InvalidCastException: Cannot cast from source type to destination type. 
at (wrapper managed-to-native) System.Array:SetValueImpl (object,int) 
at System.Array.SetValue (System.Object value, Int32 index) [0x00000] 
at System.Data.DataTable.BinarySerialize
(System.Runtime.Serialization.SerializationInfo info, System.String prefix)
[0x00000] 
at System.Data.DataSet.BinarySerialize
(System.Runtime.Serialization.SerializationInfo si) [0x00000] 
at System.Data.DataSet.GetObjectData
(System.Runtime.Serialization.SerializationInfo info, StreamingContext context)
[0x00000] 
at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.GetObjectData
(System.Object obj,
System.Runtime.Serialization.Formatters.Binary.TypeMetadata& metadata,
System.Object& data) [0x00000] 
at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObject
(System.IO.BinaryWriter writer, Int64 id, System.Object obj) [0x00000] 
at
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObjectInstance
(System.IO.BinaryWriter writer, System.Object obj, Boolean isValueObject)
[0x00000] 
at
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteQueuedObjects
(System.IO.BinaryWriter writer) [0x00000] 
at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteObjectGraph
(System.IO.BinaryWriter writer, System.Object obj,
System.Runtime.Remoting.Messaging.Header[] headers) [0x00000] 
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize
(System.IO.Stream serializationStream, System.Object graph,
System.Runtime.Remoting.Messaging.Header[] headers) [0x00000] 
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize
(System.IO.Stream serializationStream, System.Object graph) [0x00000] 
at testmono.testserialize.Page_Load (System.Object sender, System.EventArgs e)
[0x00000]

Expected Results:  
A byte array.

Changing the rows to 
            dt.Rows.Add(new object[] { "","a"});
            dt.Rows.Add(new object[] { "b","b"});
or also to
            dt.Rows.Add(new object[] { "","a"});
            dt.Rows.Add(new object[] { null,"b"});
works.

-- 
Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list