Invalid IL code IL_0038: newobj in MonoTouch unsafe+fixed region
===

I am trying to get a rectangular array of bytes from a bitmap in MonoTouch.  A CGBitmapContext can be created from a linear array (byte[]) or an IntPtr.  Thus I am using unsafe+fixed code to cast my rectangular array to an IntPtr.  Alas, I get the following exception:

**System.InvalidProgramException**  
`Invalid IL code in Foo.FooViewController:GetRawBytes (MonoTouch.UIKit.UIImage): IL_0038: newobj    0x0a000012`

The unsafe block follows:

    unsafe
    {
        fixed (byte* p = bytes)
        {
            IntPtr ptr = (IntPtr)p;
            using (var context = new CGBitmapContext(
                ptr, 
                width, 
                height, 
                bitsPerComponent, 
                bytesPerRow, 
                colorSpace, 
                CGBitmapFlags.ByteOrder32Big | CGBitmapFlags.PremultipliedLast))
            {
                context.ClipToRect(clipRect);
                context.DrawImage(drawRect, image.CGImage);
            }
        }
    }

Am I doing something wrong, or is this a Mono bug?