summaryrefslogtreecommitdiff
path: root/vcl/source/gdi/jobset.cxx
diff options
context:
space:
mode:
authorThorsten Behrens <Thorsten.Behrens@CIB.de>2018-10-01 03:09:35 +0200
committerThorsten Behrens <thorsten.behrens@allotropia.de>2023-10-29 12:21:34 +0100
commitd97e0458914991214e3d396273862855aff66234 (patch)
tree15a53170df16d021fee3459168871260022cd311 /vcl/source/gdi/jobset.cxx
parentc75cac85230d3899fe9f5f5086c117e4e1e5d330 (diff)
vcl: no raw pointers
For ImplJobSetup. Also, check memcmp mem size more properly Change-Id: Idcf20bf1b51bc2508f3d37e018efd18e591a6099 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/26648 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
Diffstat (limited to 'vcl/source/gdi/jobset.cxx')
-rw-r--r--vcl/source/gdi/jobset.cxx30
1 files changed, 13 insertions, 17 deletions
diff --git a/vcl/source/gdi/jobset.cxx b/vcl/source/gdi/jobset.cxx
index 9969a6165327..c9ed0d9626ec 100644
--- a/vcl/source/gdi/jobset.cxx
+++ b/vcl/source/gdi/jobset.cxx
@@ -65,7 +65,6 @@ ImplJobSetup::ImplJobSetup()
mnPaperWidth = 0;
mnPaperHeight = 0;
mnDriverDataLen = 0;
- mpDriverData = nullptr;
mbPapersizeFromSetup = false;
meSetupMode = PrinterSetupMode::DocumentGlobal;
}
@@ -81,14 +80,15 @@ ImplJobSetup::ImplJobSetup( const ImplJobSetup& rJobSetup ) :
mnPaperWidth( rJobSetup.GetPaperWidth() ),
mnPaperHeight( rJobSetup.GetPaperHeight() ),
mnDriverDataLen( rJobSetup.GetDriverDataLen() ),
+ mpDriverData(),
mbPapersizeFromSetup( rJobSetup.GetPapersizeFromSetup() ),
meSetupMode( rJobSetup.GetPrinterSetupMode() ),
maValueMap( rJobSetup.GetValueMap() )
{
if ( rJobSetup.GetDriverData() )
{
- mpDriverData = static_cast<sal_uInt8*>(std::malloc( mnDriverDataLen ));
- memcpy( mpDriverData, rJobSetup.GetDriverData(), mnDriverDataLen );
+ mpDriverData.reset( new sal_uInt8[mnDriverDataLen] );
+ memcpy( mpDriverData.get(), rJobSetup.GetDriverData(), mnDriverDataLen );
}
else
mpDriverData = nullptr;
@@ -96,7 +96,6 @@ ImplJobSetup::ImplJobSetup( const ImplJobSetup& rJobSetup ) :
ImplJobSetup::~ImplJobSetup()
{
- std::free( mpDriverData );
}
void ImplJobSetup::SetSystem(sal_uInt16 nSystem)
@@ -144,16 +143,12 @@ void ImplJobSetup::SetPaperHeight(tools::Long nPaperHeight)
mnPaperHeight = nPaperHeight;
}
-void ImplJobSetup::SetDriverDataLen(sal_uInt32 nDriverDataLen)
+void ImplJobSetup::SetDriverData(std::unique_ptr<sal_uInt8[]> pDriverData, sal_uInt32 nDriverDataLen)
{
+ mpDriverData = std::move(pDriverData);
mnDriverDataLen = nDriverDataLen;
}
-void ImplJobSetup::SetDriverData(sal_uInt8* pDriverData)
-{
- mpDriverData = pDriverData;
-}
-
void ImplJobSetup::SetPapersizeFromSetup(bool bPapersizeFromSetup)
{
mbPapersizeFromSetup = bPapersizeFromSetup;
@@ -187,7 +182,9 @@ bool ImplJobSetup::operator==( const ImplJobSetup& rImplJobSetup ) const
mbPapersizeFromSetup == rImplJobSetup.mbPapersizeFromSetup &&
mnDriverDataLen == rImplJobSetup.mnDriverDataLen &&
maValueMap == rImplJobSetup.maValueMap &&
- memcmp( mpDriverData, rImplJobSetup.mpDriverData, mnDriverDataLen ) == 0;
+ memcmp( mpDriverData.get(),
+ rImplJobSetup.mpDriverData.get(),
+ std::min(mnDriverDataLen, rImplJobSetup.mnDriverDataLen)) == 0;
}
namespace
@@ -283,7 +280,7 @@ SvStream& ReadJobSetup( SvStream& rIStream, JobSetup& rJobSetup )
Impl364JobSetupData* pOldJobData = reinterpret_cast<Impl364JobSetupData*>(pTempBuf.get() + sizeof( ImplOldJobSetupData ));
sal_uInt16 nOldJobDataSize = SVBT16ToUInt16( pOldJobData->nSize );
rJobData.SetSystem( SVBT16ToUInt16( pOldJobData->nSystem ) );
- rJobData.SetDriverDataLen( SVBT32ToUInt32( pOldJobData->nDriverDataLen ) );
+ const sal_uInt32 nDriverDataLen = SVBT32ToUInt32( pOldJobData->nDriverDataLen );
rJobData.SetOrientation( static_cast<Orientation>(SVBT16ToUInt16( pOldJobData->nOrientation )) );
rJobData.SetDuplexMode( DuplexMode::Unknown );
rJobData.SetPaperBin( SVBT16ToUInt16( pOldJobData->nPaperBin ) );
@@ -297,7 +294,7 @@ SvStream& ReadJobSetup( SvStream& rIStream, JobSetup& rJobSetup )
}
rJobData.SetPaperWidth( static_cast<tools::Long>(SVBT32ToUInt32( pOldJobData->nPaperWidth )) );
rJobData.SetPaperHeight( static_cast<tools::Long>(SVBT32ToUInt32( pOldJobData->nPaperHeight )) );
- if ( rJobData.GetDriverDataLen() )
+ if ( nDriverDataLen )
{
const char* pDriverData = reinterpret_cast<const char*>(pOldJobData) + nOldJobDataSize;
const char* pDriverDataEnd = pDriverData + rJobData.GetDriverDataLen();
@@ -307,10 +304,9 @@ SvStream& ReadJobSetup( SvStream& rIStream, JobSetup& rJobSetup )
}
else
{
- sal_uInt8* pNewDriverData = static_cast<sal_uInt8*>(
- std::malloc( rJobData.GetDriverDataLen() ));
- memcpy( pNewDriverData, pDriverData, rJobData.GetDriverDataLen() );
- rJobData.SetDriverData( pNewDriverData );
+ auto pNewDriverData = std::make_unique<sal_uInt8[]>( nDriverDataLen );
+ memcpy( pNewDriverData.get(), pDriverData, nDriverDataLen );
+ rJobData.SetDriverData( std::move(pNewDriverData), nDriverDataLen );
}
}
if( nSystem == JOBSET_FILE605_SYSTEM )