diff --git a/Engine/source/core/util/zip/zipCryptStream.cpp b/Engine/source/core/util/zip/zipCryptStream.cpp index ba58349b6..8e0cddfe4 100644 --- a/Engine/source/core/util/zip/zipCryptStream.cpp +++ b/Engine/source/core/util/zip/zipCryptStream.cpp @@ -85,7 +85,7 @@ void ZipCryptRStream::setPassword(const char *password) bool ZipCryptRStream::attachStream(Stream* io_pSlaveStream) { - mStream = io_pSlaveStream; + mStream = io_pSlaveStream->clone(); mStreamStartPos = mStream->getPosition(); // [tom, 12/20/2005] Encrypted zip files have an extra 12 bytes diff --git a/Engine/source/core/util/zip/zipSubStream.cpp b/Engine/source/core/util/zip/zipSubStream.cpp index 4a38a955a..1c64fe3bc 100644 --- a/Engine/source/core/util/zip/zipSubStream.cpp +++ b/Engine/source/core/util/zip/zipSubStream.cpp @@ -58,7 +58,10 @@ bool ZipSubRStream::attachStream(Stream* io_pSlaveStream) AssertFatal(io_pSlaveStream != NULL, "NULL Slave stream?"); AssertFatal(m_pStream == NULL, "Already attached!"); + m_pStream = io_pSlaveStream->clone(); + if (!m_pStream) m_pStream = io_pSlaveStream; + m_originalSlavePosition = io_pSlaveStream->getPosition(); m_uncompressedSize = 0; m_currentPosition = 0;