summaryrefslogtreecommitdiff
path: root/tools/source
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-02-16 09:20:12 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-02-16 12:13:54 +0100
commitbcdaaf62d41728eb757ff2b9cb95c2df2791e2f4 (patch)
treeb86fe00981f1ff4983c7df4771ae2b027e128696 /tools/source
parent261d422d9e0dc4d36ddfa43180e63286cbb89bf4 (diff)
Resolves: tdf#115750 SvStream::WriteStream was broken
and didn't stop copying at the size limit arg Change-Id: I8f1be0310160f5158d2f64c62d6b2c09c0157930 Reviewed-on: https://gerrit.libreoffice.org/49838 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'tools/source')
-rw-r--r--tools/source/stream/stream.cxx11
1 files changed, 5 insertions, 6 deletions
diff --git a/tools/source/stream/stream.cxx b/tools/source/stream/stream.cxx
index 3a9f767880dd..5d6d3e58336b 100644
--- a/tools/source/stream/stream.cxx
+++ b/tools/source/stream/stream.cxx
@@ -1186,13 +1186,12 @@ sal_uInt64 SvStream::WriteStream( SvStream& rStream, sal_uInt64 nSize )
sal_uInt32 nCount;
sal_uInt64 nWriteSize = nSize;
- do {
- if ( nSize >= nCurBufLen )
- nWriteSize -= nCurBufLen;
- else
- nCurBufLen = nWriteSize;
- nCount = rStream.ReadBytes( pBuf.get(), nCurBufLen );
+ do
+ {
+ nCurBufLen = std::min<sal_uInt64>(nCurBufLen, nWriteSize);
+ nCount = rStream.ReadBytes(pBuf.get(), nCurBufLen);
WriteBytes( pBuf.get(), nCount );
+ nWriteSize -= nCount;
}
while( nWriteSize && nCount == nCurBufLen );