/// <summary> /// Reads the current entry into the specified memory stream /// </summary> /// <remarks> /// The data is put directly into the memory stream buffer /// No write operations are performed on the memory stream /// </remarks> /// <param name="memoryStream">memory stream</param> public void ReadCurrentEntry(MemoryStream memoryStream) { // Make sure the memory stream has enough capacity to hold the data memoryStream.SetLength(_currentZipEntry.UncompressedLength); byte[] memBuffer = memoryStream.GetBuffer(); int bytesRead = 0; int offset = 0; unsafe { fixed(byte *p = memBuffer) { for (; ;) { bytesRead = ZlibWrapper.ZlibUnzReadCurrentFile(_zipFileHandle, (IntPtr)p + offset, 4096); offset += bytesRead; if (bytesRead <= 0) { break; } } } } }