protected override void Dispose(bool disposing)
{
if (disposing && !_isDisposed)
{
_crcSizeStream.Dispose(); // now we have size/crc info
if (!_everWritten)
{
// write local header, no data, so we use stored
_entry.WriteLocalFileHeader(isEmptyFile: true);
}
else
{
// go back and finish writing
if (_entry._archive.ArchiveStream.CanSeek)
{
// finish writing local header if we have seek capabilities
_entry.WriteCrcAndSizesInLocalHeader(_usedZip64inLH);
}
else
{
// write out data descriptor if we don't have seek capabilities
_entry.WriteDataDescriptor();
}
}
_canWrite = false;
_isDisposed = true;
}
base.Dispose(disposing);
}