[Mono-devel-list] List<byte>.AddRange throws NullReferenceException

Samuel Kaufman emrysk at gmail.com
Sat May 14 18:03:45 EDT 2005


I'm using Mono 1.1.7 built from source on Ubuntu (Hoary).

The following code throws a NullReferenceException from AddRange. 
I've checked my variables and none are null.

    public byte[] ToData()
    {
        List<byte> buffer = new List<byte>(96);
        byte[] b1 = Encoding.ASCII.GetBytes("Electricman");
        buffer.AddRange(b1);
        return buffer.ToArray();
    }

Here's the dump:

$ gmcs hi.cs User.cs
$ mono hi.exe

Unhandled Exception: System.NullReferenceException: A null value was
found where an object instance was required.
in <0x00022> System.Collections.Generic.List`1<System.Byte>:AddRange
(IEnumerable`1 )
in <0x00050> LoginPacket:ToData ()
in <0x00012> LoginPacket:Send (System.Net.Sockets.Socket socket)
in <0x0009c> Program:Main ()


This is the odd bit, though.  If I call:   foreach (byte b in b1)
buffer.Add(b);   instead of AddRange, it works just fine.


Looking at Mono's source, AddRange is implemented in this chunk of
code, which should be identical to what I'm doing with foreach:

[MonoTODO ("PERFORMANCE: fix if it is an IList <T>")]
public void AddRange(IEnumerable<T> collection)
{
	foreach (T t in collection)
		Add (t);
}


My first intuition is that this is a bug with IEnumerable<byte> in
Mono, but I wanted to post here before filing a bug report.  (I'm not
totally sure I'm not just doing something stupid.)  Has anybody else
had the same problem?



More information about the Mono-devel-list mailing list