[Mono-bugs] [Bug 350860] New: System.IO. MemoryStream ToArray fails if Capacity is set to 0

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Thu Dec 27 19:04:07 EST 2007


https://bugzilla.novell.com/show_bug.cgi?id=350860


           Summary: System.IO.MemoryStream ToArray fails if Capacity is set
                    to 0
           Product: Mono: Class Libraries
           Version: 1.2.6
          Platform: x86
        OS/Version: Mac OS X 10.5
            Status: NEW
          Severity: Normal
          Priority: P5 - None
         Component: CORLIB
        AssignedTo: mono-bugs at ximian.com
        ReportedBy: casey.s.marshall at gmail.com
         QAContact: mono-bugs at ximian.com
          Found By: ---


Created an attachment (id=188834)
 --> (https://bugzilla.novell.com/attachment.cgi?id=188834)
Test case.

If you use a MemoryStream, then set the Length to 0 and the Capacity to 0
(creating an empty MemoryStream) the ToArray method will fail.

Steps to reproduce:

1. run the attached test case.

Expected results: three lines are printed: one blank, one saying 'atoms:', one
blank.

Actual results: the program crashes with this output:

-> 
-> atoms:
-> Stacktrace:
-> 
->   at (wrapper managed-to-native) System.Buffer.BlockCopyInternal
(System.Array,int,System.Array,int,int) <0x00004>
->   at (wrapper managed-to-native) System.Buffer.BlockCopyInternal
(System.Array,int,System.Array,int,int) <0xffffffff>
->   at System.IO.MemoryStream.ToArray () <0x00042>
->   at zeroms.Main () <0x00185>
->   at (wrapper runtime-invoke) zeroms.runtime_invoke_void
(object,intptr,intptr,intptr) <0xffffffff>
-> Abort trap

Looking at the code to MemoryStream, it looks like the Capacity setter sets
'internalBuffer' to null when the capacity is zero, but that there isn't
anything handling a null 'internalBuffer' properly in ToArray. That is, a null
array is passed to Buffer.BlockCopyInternal.

Also reproduces on mono 1.2.4 on GNU/Linux x86 (Ubuntu gutsy mono package).


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


More information about the mono-bugs mailing list