From 1a6bd7b23a8f34bea3c74557a0e8e1ffd1ccb50e Mon Sep 17 00:00:00 2001 From: Muhammad Ammar Date: Mon, 27 Apr 2026 16:20:21 +0500 Subject: [PATCH] tdf#163691 replace memcpy with std::copy_n in package and xmlscript Restored #include header in both files as follow: - /package/source/zippackage/ZipPackageBuffer.cxx - /xmlscript/source/xml_helper/xml_byteseq.cxx Change-Id: I5615140028c9f29eaa87e7269135748790f19ed3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/204441 Tested-by: Julien Nabet Reviewed-by: Julien Nabet --- package/source/zipapi/XBufferedThreadedStream.cxx | 6 ++++-- package/source/zipapi/XUnbufferedStream.cxx | 3 ++- package/source/zippackage/ZipPackageBuffer.cxx | 6 ++++-- xmlscript/qa/cppunit/test.cxx | 4 +++- xmlscript/source/xml_helper/xml_byteseq.cxx | 5 +++-- 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/package/source/zipapi/XBufferedThreadedStream.cxx b/package/source/zipapi/XBufferedThreadedStream.cxx index ea7c270ebea6..34f8a6573996 100644 --- a/package/source/zipapi/XBufferedThreadedStream.cxx +++ b/package/source/zipapi/XBufferedThreadedStream.cxx @@ -9,6 +9,8 @@ #include "XBufferedThreadedStream.hxx" +#include + using namespace css::uno; namespace { @@ -147,7 +149,7 @@ sal_Int32 SAL_CALL XBufferedThreadedStream::readBytes( Sequence< sal_Int8 >& rDa } const sal_Int32 limit = std::min( nPendingBytes, pBuffer.getLength() - mnOffset ); - memcpy( &pData[i], &pBuffer[mnOffset], limit ); + std::copy_n(&pBuffer[mnOffset], limit, &pData[i]); nPendingBytes -= limit; mnOffset += limit; @@ -173,7 +175,7 @@ sal_Int32 XBufferedThreadedStream::readSomeBytes( sal_Int8* pData, sal_Int32 nBy return nAvailableSize - nPendingBytes; const sal_Int32 limit = std::min( nPendingBytes, pBuffer.getLength() - mnOffset ); - memcpy( &pData[i], &pBuffer[mnOffset], limit ); + std::copy_n(&pBuffer[mnOffset], limit, &pData[i]); nPendingBytes -= limit; mnOffset += limit; diff --git a/package/source/zipapi/XUnbufferedStream.cxx b/package/source/zipapi/XUnbufferedStream.cxx index 73c89ae9ebf2..08f5c7ae2fcf 100644 --- a/package/source/zipapi/XUnbufferedStream.cxx +++ b/package/source/zipapi/XUnbufferedStream.cxx @@ -186,7 +186,8 @@ sal_Int32 SAL_CALL XUnbufferedStream::readBytes( Sequence< sal_Int8 >& aData, sa { sal_Int16 nHeadRead = static_cast< sal_Int16 >(( nRequestedBytes > mnHeaderToRead ? mnHeaderToRead : nRequestedBytes )); - memcpy ( aData.getArray(), maHeader.getConstArray() + maHeader.getLength() - mnHeaderToRead, nHeadRead ); + std::copy_n(maHeader.getConstArray() + maHeader.getLength() - mnHeaderToRead, + nHeadRead, aData.getArray()); mnHeaderToRead = mnHeaderToRead - nHeadRead; if ( nHeadRead < nRequestedBytes ) diff --git a/package/source/zippackage/ZipPackageBuffer.cxx b/package/source/zippackage/ZipPackageBuffer.cxx index 0e7615de193f..4364230c8226 100644 --- a/package/source/zippackage/ZipPackageBuffer.cxx +++ b/package/source/zippackage/ZipPackageBuffer.cxx @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -50,7 +51,7 @@ sal_Int32 SAL_CALL ZipPackageBuffer::readBytes( Sequence< sal_Int8 >& aData, sal nBytesToRead = static_cast < sal_Int32 > (m_nEnd - m_nCurrent); aData.realloc ( nBytesToRead ); - memcpy(aData.getArray(), m_aBuffer.getConstArray() + m_nCurrent, nBytesToRead); + std::copy_n(m_aBuffer.getConstArray() + m_nCurrent, nBytesToRead, aData.getArray()); m_nCurrent +=nBytesToRead; return nBytesToRead; } @@ -93,7 +94,8 @@ void SAL_CALL ZipPackageBuffer::writeBytes( const Sequence< sal_Int8 >& aData ) m_aBuffer.realloc ( static_cast < sal_Int32 > ( m_nBufferSize ) ); m_bMustInitBuffer = false; } - memcpy( m_aBuffer.getArray() + m_nCurrent, aData.getConstArray(), static_cast < sal_Int32 > (nDataLen)); + std::copy_n(aData.getConstArray(), static_cast(nDataLen), + m_aBuffer.getArray() + m_nCurrent); m_nCurrent+=nDataLen; if (m_nCurrent>m_nEnd) m_nEnd = m_nCurrent; diff --git a/xmlscript/qa/cppunit/test.cxx b/xmlscript/qa/cppunit/test.cxx index 102d6653cd38..603eccdc0bd1 100644 --- a/xmlscript/qa/cppunit/test.cxx +++ b/xmlscript/qa/cppunit/test.cxx @@ -7,6 +7,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include + #include #include #include @@ -121,7 +123,7 @@ void XmlScriptTest::exportToFile(std::u16string_view sURL, sal_Int32 nPos = bytes.getLength(); bytes.realloc(nPos + nRead); - memcpy(bytes.getArray() + nPos, readBytes.getConstArray(), static_cast(nRead)); + std::copy_n(readBytes.getConstArray(), nRead, bytes.getArray() + nPos); } osl::File aFile(OUString{ sURL }); diff --git a/xmlscript/source/xml_helper/xml_byteseq.cxx b/xmlscript/source/xml_helper/xml_byteseq.cxx index 7a976463d048..4b695a5d6385 100644 --- a/xmlscript/source/xml_helper/xml_byteseq.cxx +++ b/xmlscript/source/xml_helper/xml_byteseq.cxx @@ -18,6 +18,7 @@ */ #include +#include #include #include @@ -68,7 +69,7 @@ sal_Int32 BSeqInputStream::readBytes( if (rData.getLength() != nBytesToRead) rData.realloc( nBytesToRead ); if (nBytesToRead != 0) { - memcpy(rData.getArray(), &_seq[_nPos], nBytesToRead); + std::copy_n(_seq.data() + _nPos, nBytesToRead, rData.getArray()); } _nPos += nBytesToRead; return nBytesToRead; @@ -142,7 +143,7 @@ Reference< io::XInputStream > createInputStream( const sal_Int8* pData, int len { std::vector rInData(len); if (len != 0) { - memcpy( rInData.data(), pData, len); + std::copy_n(pData, len, rInData.data()); } return new BSeqInputStream( std::move(rInData) ); }