Bug 43022

Summary: ZipArchive.Entries is not updated when ZipArchiveEntry is deleted
Product: [Mono] Class Libraries Reporter: Tim Jones <tim.jones>
Component: SharpZipLibAssignee: João Matos <joao.matos>
Status: RESOLVED FIXED    
Severity: normal CC: masafa, mono-bugs+mono
Priority: ---    
Version: 4.7.X   
Target Milestone: Untriaged   
Hardware: Other   
OS: Other   
Tags: Is this bug a regression?: ---
Last known good build:

Description Tim Jones 2016-08-03 07:09:44 UTC
Steps to repro:

1. Open a ZipArchive, which contains an existing file - for example, test.txt.
2. Get the ZipArchiveEntry for this file - i.e. zipArchive.GetEntry("test.txt").
3. Delete the ZipArchiveEntry - zipArchiveEntry.Delete().

Expected outcome:
zipArchive.Entries should no longer contain the deleted ZipArchiveEntry. This is what happens in the .NET Framework implementation.

Actual outcome:
zipArchive.Entries does contain the deleted ZipArchiveEntry.

From reading the source code, it looks like ZipArchiveEntry.Delete() calls Archive.zipFile.RemoveEntry(entry) - which removes the entry from SharpCompress.Archive.Zip.ZipArchive's Entries collection, but not System.IO.Compression.ZipArchive.Entries.
Comment 1 João Matos 2016-08-04 12:32:08 UTC
Pushed PR: https://github.com/mono/mono/pull/3357