diff options
author | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2018-10-01 03:09:35 +0200 |
---|---|---|
committer | Thorsten Behrens <thorsten.behrens@allotropia.de> | 2023-10-29 12:21:34 +0100 |
commit | d97e0458914991214e3d396273862855aff66234 (patch) | |
tree | 15a53170df16d021fee3459168871260022cd311 /vcl/source/gdi | |
parent | c75cac85230d3899fe9f5f5086c117e4e1e5d330 (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')
-rw-r--r-- | vcl/source/gdi/jobset.cxx | 30 | ||||
-rw-r--r-- | vcl/source/gdi/print.cxx | 4 |
2 files changed, 14 insertions, 20 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 ) diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx index 3e92abd02487..eff94a9211ea 100644 --- a/vcl/source/gdi/print.cxx +++ b/vcl/source/gdi/print.cxx @@ -616,9 +616,7 @@ void Printer::ImplInit( SalPrinterQueueInfo* pInfo ) if ( rData.GetPrinterName() != pInfo->maPrinterName || rData.GetDriver() != pInfo->maDriver ) { - std::free( const_cast<sal_uInt8*>(rData.GetDriverData()) ); - rData.SetDriverData(nullptr); - rData.SetDriverDataLen(0); + rData.SetDriverData(nullptr, 0); } } |