diff options
Diffstat (limited to 'package')
-rw-r--r-- | package/source/zipapi/XBufferedThreadedStream.cxx | 5 | ||||
-rw-r--r-- | package/source/zipapi/XBufferedThreadedStream.hxx | 7 | ||||
-rw-r--r-- | package/source/zipapi/XUnbufferedStream.hxx | 2 | ||||
-rw-r--r-- | package/source/zipapi/ZipFile.cxx | 6 |
4 files changed, 12 insertions, 8 deletions
diff --git a/package/source/zipapi/XBufferedThreadedStream.cxx b/package/source/zipapi/XBufferedThreadedStream.cxx index 990844af0bd7..87b7349cccba 100644 --- a/package/source/zipapi/XBufferedThreadedStream.cxx +++ b/package/source/zipapi/XBufferedThreadedStream.cxx @@ -50,10 +50,11 @@ private: } XBufferedThreadedStream::XBufferedThreadedStream( - const Reference<XInputStream>& xSrcStream ) + const Reference<XInputStream>& xSrcStream, + sal_Int64 nStreamSize) : mxSrcStream( xSrcStream ) , mnPos(0) -, mnStreamSize( xSrcStream->available() ) +, mnStreamSize( nStreamSize ) , mnOffset( 0 ) , mxUnzippingThread( new UnzippingThread(*this) ) , mbTerminateThread( false ) diff --git a/package/source/zipapi/XBufferedThreadedStream.hxx b/package/source/zipapi/XBufferedThreadedStream.hxx index b047b25fdf85..9ba908e01f5e 100644 --- a/package/source/zipapi/XBufferedThreadedStream.hxx +++ b/package/source/zipapi/XBufferedThreadedStream.hxx @@ -23,8 +23,8 @@ class XBufferedThreadedStream : public cppu::WeakImplHelper< css::io::XInputStre { private: const css::uno::Reference<XInputStream> mxSrcStream; - size_t mnPos; /// position in stream - size_t mnStreamSize; /// available size of stream + sal_Int64 mnPos; /// position in stream + sal_Int64 mnStreamSize; /// available size of stream Buffer maInUseBuffer; /// Buffer block in use int mnOffset; /// position in maInUseBuffer @@ -59,7 +59,8 @@ private: public: XBufferedThreadedStream( - const css::uno::Reference<XInputStream>& xSrcStream ); + const css::uno::Reference<XInputStream>& xSrcStream, + sal_Int64 nStreamSize /* cf. sal_Int32 available(); */ ); virtual ~XBufferedThreadedStream() override; diff --git a/package/source/zipapi/XUnbufferedStream.hxx b/package/source/zipapi/XUnbufferedStream.hxx index 4c05b9dad3d9..a463983b90b0 100644 --- a/package/source/zipapi/XUnbufferedStream.hxx +++ b/package/source/zipapi/XUnbufferedStream.hxx @@ -81,6 +81,8 @@ public: const css::uno::Reference < css::io::XInputStream >& xRawStream, const ::rtl::Reference< EncryptionData >& rData ); + sal_Int64 getSize() { return mnZipSize; } + virtual ~XUnbufferedStream() override; // XInputStream diff --git a/package/source/zipapi/ZipFile.cxx b/package/source/zipapi/ZipFile.cxx index 2a45119f11d2..c331282f9c76 100644 --- a/package/source/zipapi/ZipFile.cxx +++ b/package/source/zipapi/ZipFile.cxx @@ -613,16 +613,16 @@ uno::Reference< XInputStream > ZipFile::createStreamForZipEntry( { ::osl::MutexGuard aGuard( m_aMutexHolder->GetMutex() ); - uno::Reference<io::XInputStream> xSrcStream = new XUnbufferedStream( + rtl::Reference< XUnbufferedStream > xSrcStream = new XUnbufferedStream( m_xContext, aMutexHolder, rEntry, xStream, rData, nStreamMode, bIsEncrypted, aMediaType, bRecoveryMode); uno::Reference<io::XInputStream> xBufStream; static const sal_Int32 nThreadingThreshold = 10000; if( xSrcStream->available() > nThreadingThreshold ) - xBufStream = new XBufferedThreadedStream(xSrcStream); + xBufStream = new XBufferedThreadedStream(xSrcStream.get(), xSrcStream->getSize()); else - xBufStream = new XBufferedStream(xSrcStream); + xBufStream = new XBufferedStream(xSrcStream.get()); return xBufStream; } |