summaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
Diffstat (limited to 'package')
-rw-r--r--package/inc/ZipFile.hxx4
-rw-r--r--package/inc/ZipPackageStream.hxx2
-rw-r--r--package/source/zipapi/ZipFile.cxx11
-rw-r--r--package/source/zippackage/ZipPackageStream.cxx8
4 files changed, 16 insertions, 9 deletions
diff --git a/package/inc/ZipFile.hxx b/package/inc/ZipFile.hxx
index 1ca47f43b19c..021493d64459 100644
--- a/package/inc/ZipFile.hxx
+++ b/package/inc/ZipFile.hxx
@@ -71,6 +71,7 @@ class ZipFile
const ::rtl::Reference < EncryptionData > &rData,
sal_Int8 nStreamMode,
bool bDecrypt,
+ const bool bUseBufferedStream = true,
const OUString& aMediaType = OUString() );
bool hasValidPassword ( ZipEntry & rEntry, const rtl::Reference < EncryptionData > &rData );
@@ -108,7 +109,8 @@ public:
ZipEntry& rEntry,
const ::rtl::Reference < EncryptionData > &rData,
bool bDecrypt,
- const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder );
+ const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder,
+ const bool bUseBufferedStream = true );
static css::uno::Reference< css::xml::crypto::XDigestContext > StaticGetDigestContextForChecksum(
const css::uno::Reference< css::uno::XComponentContext >& xArgContext,
diff --git a/package/inc/ZipPackageStream.hxx b/package/inc/ZipPackageStream.hxx
index 5930e300898b..228b5c08618d 100644
--- a/package/inc/ZipPackageStream.hxx
+++ b/package/inc/ZipPackageStream.hxx
@@ -74,7 +74,7 @@ private:
/// Check that m_xStream implements io::XSeekable and return it
css::uno::Reference< css::io::XInputStream > const & GetOwnSeekStream();
/// @throws css::uno::RuntimeException
- css::uno::Reference< css::io::XInputStream > SAL_CALL getRawData();
+ css::uno::Reference< css::io::XInputStream > SAL_CALL getRawData( const bool bUseBufferedStream = true );
public:
bool IsPackageMember () const { return m_nStreamMode == PACKAGE_STREAM_PACKAGEMEMBER;}
diff --git a/package/source/zipapi/ZipFile.cxx b/package/source/zipapi/ZipFile.cxx
index 12c0c5ff86d1..817a0e2798bb 100644
--- a/package/source/zipapi/ZipFile.cxx
+++ b/package/source/zipapi/ZipFile.cxx
@@ -609,6 +609,7 @@ uno::Reference< XInputStream > ZipFile::createStreamForZipEntry(
const ::rtl::Reference< EncryptionData > &rData,
sal_Int8 nStreamMode,
bool bIsEncrypted,
+ const bool bUseBufferedStream,
const OUString& aMediaType )
{
::osl::MutexGuard aGuard( m_aMutexHolder->GetMutex() );
@@ -616,6 +617,9 @@ uno::Reference< XInputStream > ZipFile::createStreamForZipEntry(
rtl::Reference< XUnbufferedStream > xSrcStream = new XUnbufferedStream(
m_xContext, aMutexHolder, rEntry, xStream, rData, nStreamMode, bIsEncrypted, aMediaType, bRecoveryMode);
+ if (!bUseBufferedStream)
+ return xSrcStream.get();
+
uno::Reference<io::XInputStream> xBufStream;
static const sal_Int32 nThreadingThreshold = 10000;
@@ -698,14 +702,15 @@ uno::Reference< XInputStream > ZipFile::getDataStream( ZipEntry& rEntry,
uno::Reference< XInputStream > ZipFile::getRawData( ZipEntry& rEntry,
const ::rtl::Reference< EncryptionData >& rData,
bool bIsEncrypted,
- const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder )
+ const rtl::Reference<comphelper::RefCountedMutex>& aMutexHolder,
+ const bool bUseBufferedStream )
{
::osl::MutexGuard aGuard( m_aMutexHolder->GetMutex() );
if ( rEntry.nOffset <= 0 )
readLOC( rEntry );
- return createStreamForZipEntry ( aMutexHolder, rEntry, rData, UNBUFF_STREAM_RAW, bIsEncrypted );
+ return createStreamForZipEntry ( aMutexHolder, rEntry, rData, UNBUFF_STREAM_RAW, bIsEncrypted, bUseBufferedStream );
}
uno::Reference< XInputStream > ZipFile::getWrappedRawStream(
@@ -722,7 +727,7 @@ uno::Reference< XInputStream > ZipFile::getWrappedRawStream(
if ( rEntry.nOffset <= 0 )
readLOC( rEntry );
- return createStreamForZipEntry ( aMutexHolder, rEntry, rData, UNBUFF_STREAM_WRAPPEDRAW, true, aMediaType );
+ return createStreamForZipEntry ( aMutexHolder, rEntry, rData, UNBUFF_STREAM_WRAPPEDRAW, true, true, aMediaType );
}
bool ZipFile::readLOC( ZipEntry &rEntry )
diff --git a/package/source/zippackage/ZipPackageStream.cxx b/package/source/zippackage/ZipPackageStream.cxx
index a3893b8b908f..e7f4e88f55c7 100644
--- a/package/source/zippackage/ZipPackageStream.cxx
+++ b/package/source/zippackage/ZipPackageStream.cxx
@@ -572,7 +572,7 @@ bool ZipPackageStream::saveChild(
if ( !bUseNonSeekableAccess )
{
- xStream = getRawData();
+ xStream = getRawData( false );
if ( !xStream.is() )
{
@@ -708,7 +708,7 @@ bool ZipPackageStream::saveChild(
// to get a new version of it as we can't seek backwards.
if ( IsPackageMember() )
{
- xStream = getRawData();
+ xStream = getRawData( false );
if ( !xStream.is() )
{
// Make sure that we actually _got_ a new one !
@@ -937,13 +937,13 @@ void SAL_CALL ZipPackageStream::setInputStream( const uno::Reference< io::XInput
m_nStreamMode = PACKAGE_STREAM_DETECT;
}
-uno::Reference< io::XInputStream > SAL_CALL ZipPackageStream::getRawData()
+uno::Reference< io::XInputStream > SAL_CALL ZipPackageStream::getRawData( const bool bUseBufferedStream )
{
try
{
if ( IsPackageMember() )
{
- return m_rZipPackage.getZipFile().getRawData( aEntry, GetEncryptionData(), m_bIsEncrypted, m_rZipPackage.GetSharedMutexRef() );
+ return m_rZipPackage.getZipFile().getRawData( aEntry, GetEncryptionData(), m_bIsEncrypted, m_rZipPackage.GetSharedMutexRef(), bUseBufferedStream );
}
else if ( GetOwnSeekStream().is() )
{