diff --git a/src/incidenceattachment.cpp b/src/incidenceattachment.cpp --- a/src/incidenceattachment.cpp +++ b/src/incidenceattachment.cpp @@ -141,20 +141,22 @@ void IncidenceAttachment::addAttachment() { + QPointer that(this); AttachmentIconItem *item = new AttachmentIconItem(KCalCore::Attachment::Ptr(), mAttachmentView); - QSharedPointer d(new AttachmentEditDialog(item, mAttachmentView)); - QWeakPointer dialog(d); - dialog.data()->setWindowTitle(i18nc("@title", "Add Attachment")); - if (dialog.data()->exec() == QDialog::Rejected) { + QPointer dialog(new AttachmentEditDialog(item, mAttachmentView)); + dialog->setWindowTitle(i18nc("@title", "Add Attachment")); + auto dialogResult = dialog->exec(); + if (!that) { + return; + } + + if (dialogResult == QDialog::Rejected) { delete item; } else { Q_EMIT attachmentCountChanged(mAttachmentView->count()); } - - if (dialog.data()) { - dialog.data()->deleteLater(); - } + delete dialog; checkDirtyStatus(); }