diff --git a/filter/source/pdf/pdfdialog.cxx b/filter/source/pdf/pdfdialog.cxx index a1737a04d6f4..adba79f04ebe 100644 --- a/filter/source/pdf/pdfdialog.cxx +++ b/filter/source/pdf/pdfdialog.cxx @@ -78,13 +78,13 @@ void PDFDialog::executedDialog( sal_Int16 nExecutionResult ) void PDFDialog::runAsync(const css::uno::Reference< css::ui::dialogs::XDialogClosedListener >& xListener) { - SfxTabDialogController::runAsync(m_xAsyncDialog, [this, xListener](sal_Int32 nResponse) { - rtl::Reference xThis(this); // keep alive for scope, dialogClosed can cause owner to drop this - executedAsyncDialog( m_xAsyncDialog, nResponse ); + rtl::Reference xThis(this); // keep alive, 'this' may be droped otherwise + SfxTabDialogController::runAsync(m_xAsyncDialog, [xThis, xListener](sal_Int32 nResponse) { + xThis->executedAsyncDialog( xThis->m_xAsyncDialog, nResponse ); css::ui::dialogs::DialogClosedEvent aEvent; aEvent.DialogResult = nResponse; xListener->dialogClosed( aEvent ); - destroyAsyncDialog(); + xThis->destroyAsyncDialog(); }); }