private void MapBlock(IZipIOBlock block) { for (int i = this._blockList.Count - 1; i >= 0; i--) { ZipIORawDataFileBlock block2 = this._blockList[i] as ZipIORawDataFileBlock; if ((block2 != null) && block2.DiskImageContains(block)) { ZipIORawDataFileBlock block3; ZipIORawDataFileBlock block4; block2.SplitIntoPrefixSuffix(block, out block4, out block3); this._blockList.RemoveAt(i); if (block3 != null) { this._blockList.Insert(i, block3); } this._blockList.Insert(i, block); if (block4 != null) { this._blockList.Insert(i, block4); } return; } } throw new FileFormatException(SR.Get("CorruptedData")); }
public void UpdateReferences(bool closingFlag) { foreach (IZipIOBlock block3 in (IEnumerable)this._blockManager) { ZipIOLocalFileBlock fileBlock = block3 as ZipIOLocalFileBlock; ZipIORawDataFileBlock block = block3 as ZipIORawDataFileBlock; if (fileBlock != null) { ZipIOCentralDirectoryFileHeader header2 = (ZipIOCentralDirectoryFileHeader)this.CentralDirectoryDictionary[fileBlock.FileName]; if (header2.UpdateIfNeeded(fileBlock)) { this._dirtyFlag = true; } } else if (block != null) { long diskImageShift = block.DiskImageShift; if (diskImageShift != 0L) { foreach (ZipIOCentralDirectoryFileHeader header in this.CentralDirectoryDictionary.Values) { if (block.DiskImageContains(header.OffsetOfLocalHeader)) { header.MoveReference(diskImageShift); this._dirtyFlag = true; } } continue; } } } }