diff --git a/basctl/source/basicide/basdoc.cxx b/basctl/source/basicide/basdoc.cxx index ee96c23795e0..41b6dd74b8c2 100644 --- a/basctl/source/basicide/basdoc.cxx +++ b/basctl/source/basicide/basdoc.cxx @@ -51,7 +51,9 @@ DocShell::DocShell() } DocShell::~DocShell() -{ } +{ + pPrinter.disposeAndClear(); +} SfxPrinter* DocShell::GetPrinter( bool bCreate ) { diff --git a/sfx2/source/view/viewprn.cxx b/sfx2/source/view/viewprn.cxx index 739ce7d135a4..909c3d8c4317 100644 --- a/sfx2/source/view/viewprn.cxx +++ b/sfx2/source/view/viewprn.cxx @@ -637,7 +637,7 @@ Printer* SfxViewShell::GetActivePrinter() const void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq ) { sal_uInt16 nDialogRet = RET_CANCEL; - SfxPrinter* pPrinter = 0; + VclPtr pPrinter; bool bSilent = false; // does the function have been called by the user interface or by an API call @@ -774,7 +774,7 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq ) // if printer is unknown, it can't be used - now printer from document will be used if ( !pPrinter->IsKnown() ) - DELETEZ(pPrinter); + pPrinter.disposeAndClear(); } if ( SID_PRINTER_NAME == nId ) @@ -816,7 +816,7 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq ) if ( !bIsAPI ) { // PrinterDialog needs a temporary printer - SfxPrinter* pDlgPrinter = pPrinter->Clone(); + VclPtr pDlgPrinter = pPrinter->Clone(); nDialogRet = 0; // execute PrinterSetupDialog @@ -868,13 +868,12 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq ) // forget new printer, it was taken over (as pPrinter) or deleted pDlgPrinter = NULL; - } else { // PrinterDialog is used to transfer information on printing, // so it will only be deleted here if dialog was cancelled - DELETEZ( pDlgPrinter ); + pDlgPrinter.disposeAndClear(); rReq.Ignore(); } } diff --git a/starmath/source/unomodel.cxx b/starmath/source/unomodel.cxx index 7956ce2d438d..f9752e89292b 100644 --- a/starmath/source/unomodel.cxx +++ b/starmath/source/unomodel.cxx @@ -642,7 +642,7 @@ void SmModel::_setPropertyValues(const PropertyMapEntry** ppEntries, const Any* SfxItemSet *pItemSet = new SfxItemSet( pDocSh->GetPool(), nRange ); SmModule *pp = SM_MOD(); pp->GetConfig()->ConfigToItemSet(*pItemSet); - SfxPrinter *pPrinter = SfxPrinter::Create ( aStream, pItemSet ); + VclPtr pPrinter = SfxPrinter::Create ( aStream, pItemSet ); pDocSh->SetPrinter( pPrinter ); } diff --git a/svtools/source/dialogs/prnsetup.cxx b/svtools/source/dialogs/prnsetup.cxx index d6f35ef39fdd..a841a5997754 100644 --- a/svtools/source/dialogs/prnsetup.cxx +++ b/svtools/source/dialogs/prnsetup.cxx @@ -53,8 +53,9 @@ void ImplFreePrnDlgListBox( ListBox* pBox, bool bClear ) Printer* ImplPrnDlgListBoxSelect( ListBox* pBox, PushButton* pPropBtn, - Printer* pPrinter, Printer* pTempPrinter ) + Printer* pPrinter, Printer* pTempPrinterIn ) { + VclPtr pTempPrinter( pTempPrinterIn ); if ( pBox->GetSelectEntryPos() != LISTBOX_ENTRY_NOTFOUND ) { const QueueInfo* pInfo = Printer::GetQueueInfo( pBox->GetSelectEntry(), true ); @@ -73,7 +74,7 @@ Printer* ImplPrnDlgListBoxSelect( ListBox* pBox, PushButton* pPropBtn, if ( (pTempPrinter->GetName() != pInfo->GetPrinterName()) || (pTempPrinter->GetDriverName() != pInfo->GetDriver()) ) { - VclPtr(pTempPrinter).disposeAndClear(); + pTempPrinter.disposeAndClear(); pTempPrinter = new Printer( *pInfo ); } } @@ -91,8 +92,9 @@ Printer* ImplPrnDlgListBoxSelect( ListBox* pBox, PushButton* pPropBtn, -Printer* ImplPrnDlgUpdatePrinter( Printer* pPrinter, Printer* pTempPrinter ) +Printer* ImplPrnDlgUpdatePrinter( Printer* pPrinter, Printer* pTempPrinterIn ) { + VclPtr pTempPrinter( pTempPrinterIn ); OUString aPrnName; if ( pTempPrinter ) aPrnName = pTempPrinter->GetName(); @@ -101,7 +103,7 @@ Printer* ImplPrnDlgUpdatePrinter( Printer* pPrinter, Printer* pTempPrinter ) if ( ! Printer::GetQueueInfo( aPrnName, false ) ) { - VclPtr(pTempPrinter).disposeAndClear(); + pTempPrinter.disposeAndClear(); pTempPrinter = new Printer; } diff --git a/sw/source/uibase/uno/SwXDocumentSettings.cxx b/sw/source/uibase/uno/SwXDocumentSettings.cxx index ce19d650523b..6b947227cf77 100644 --- a/sw/source/uibase/uno/SwXDocumentSettings.cxx +++ b/sw/source/uibase/uno/SwXDocumentSettings.cxx @@ -425,7 +425,7 @@ void SwXDocumentSettings::_setSingleValue( const comphelper::PropertyInfo & rInf 0 }; SfxItemSet *pItemSet = new SfxItemSet( mpDoc->GetAttrPool(), nRange ); - SfxPrinter *pPrinter = SfxPrinter::Create ( aStream, pItemSet ); + VclPtr pPrinter = SfxPrinter::Create ( aStream, pItemSet ); // set printer only once; in _postSetValues mpPrinter.disposeAndClear(); diff --git a/vcl/source/outdev/map.cxx b/vcl/source/outdev/map.cxx index a1aa6c128a9d..753e2977e72a 100644 --- a/vcl/source/outdev/map.cxx +++ b/vcl/source/outdev/map.cxx @@ -343,6 +343,9 @@ inline void ImplCalcMapResolution( const MapMode& rMapMode, // #i75163# void OutputDevice::ImplInvalidateViewTransform() { + if(!mpOutDevData) + return; + if(mpOutDevData->mpViewTransform) { delete mpOutDevData->mpViewTransform;