Bug 42274

Summary: System.IO.Compression.ZipArchive vs System.Xml.XmlReader
Product: [Mono] Class Libraries Reporter: RichardW <numpsyuk>
Component: GeneralAssignee: João Matos <joao.matos>
Status: RESOLVED FIXED    
Severity: normal CC: masafa, mono-bugs+mono
Priority: ---    
Version: master   
Target Milestone: Untriaged   
Hardware: Macintosh   
OS: Mac OS   
Tags: Is this bug a regression?: ---
Last known good build:

Description RichardW 2016-06-30 11:43:08 UTC
Related to 

https://github.com/OfficeDev/Open-XML-SDK/issues/64
https://bugzilla.xamarin.com/show_bug.cgi?id=39282


As described at: https://github.com/OfficeDev/Open-XML-SDK/issues/64#issuecomment-228791344

If you have a zip file which contains a single xml file and try to process it with the following code using Mono 4.4.0 then the operation completes, but on the current Master you get a System.NotSupportedException from System.IO.Compression.DeflateStream.get_Length().

public static void Main(string[] args)
{
    var fileStream = new FileStream("monoTest.zip", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
    var zipArchive = new ZipArchive(fileStream, ZipArchiveMode.Update);

    var firstStream = zipArchive.Entries[0].Open();

    var xmlReader = System.Xml.XmlReader.Create(firstStream);
}

Which looks to be because XmlReader is trying to query the length on the stream you give it, which fails because it's a DeflateStream whose length can't be queried.

This test successfully loads the XML data on MS.NET/Windows.
Comment 1 João Matos 2016-06-30 13:23:43 UTC
https://github.com/mono/mono/pull/3225