Browse Source

Clone file handle for concurrent zip access.

OTHGMars 4 years ago
parent
commit
e808fc4407

+ 1 - 1
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

+ 3 - 0
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;