[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/kalarm
From: David Jarvie <software () astrojar ! org ! uk>
Date: 2009-06-23 21:56:00
Message-ID: 1245794160.670185.9668.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 986011 by djarvie:
Use QPointers to hold pointers to more modal dialogues
M +33 -17 functions.cpp
M +2 -0 lib/autoqpointer.h
--- trunk/KDE/kdepim/kalarm/functions.cpp #986010:986011
@@ -851,9 +851,11 @@
*/
void editNewAlarm(EditAlarmDlg::Type type, QWidget* parent)
{
- EditAlarmDlg* editDlg = EditAlarmDlg::create(false, type, true, parent);
+ // Use AutoQPointer to guard against crash on application exit while
+ // the dialogue is still open. It prevents double deletion (both on
+ // deletion of parent, and on return from this function).
+ AutoQPointer<EditAlarmDlg> editDlg = EditAlarmDlg::create(false, type, true, \
parent); doEditNewAlarm(editDlg);
- delete editDlg;
}
/******************************************************************************
@@ -879,11 +881,13 @@
default:
return;
}
- EditAlarmDlg* editDlg = EditAlarmDlg::create(false, type, true, parent);
+ // Use AutoQPointer to guard against crash on application exit while
+ // the dialogue is still open. It prevents double deletion (both on
+ // deletion of parent, and on return from this function).
+ AutoQPointer<EditAlarmDlg> editDlg = EditAlarmDlg::create(false, type, true, \
parent); if (setAction || text)
editDlg->setAction(action, *text);
doEditNewAlarm(editDlg);
- delete editDlg;
}
/******************************************************************************
@@ -892,9 +896,11 @@
*/
void editNewAlarm(const KAEvent* preset, QWidget* parent)
{
- EditAlarmDlg* editDlg = EditAlarmDlg::create(false, preset, true, parent);
+ // Use AutoQPointer to guard against crash on application exit while
+ // the dialogue is still open. It prevents double deletion (both on
+ // deletion of parent, and on return from this function).
+ AutoQPointer<EditAlarmDlg> editDlg = EditAlarmDlg::create(false, preset, true, \
parent); doEditNewAlarm(editDlg);
- delete editDlg;
}
/******************************************************************************
@@ -978,7 +984,10 @@
KMessageBox::sorry(parent, i18nc("@info", "You must enable a template calendar to \
save the template in")); return;
}
- EditAlarmDlg* editDlg;
+ // Use AutoQPointer to guard against crash on application exit while
+ // the dialogue is still open. It prevents double deletion (both on
+ // deletion of parent, and on return from this function).
+ AutoQPointer<EditAlarmDlg> editDlg;
if (preset)
editDlg = EditAlarmDlg::create(true, preset, true, parent);
else
@@ -993,7 +1002,6 @@
KAlarm::addTemplate(event, resource, editDlg);
Undo::saveAdd(event, resource);
}
- delete editDlg;
}
} // namespace
@@ -1012,7 +1020,10 @@
return;
}
QString id = event->id();
- EditAlarmDlg* editDlg = EditAlarmDlg::create(false, event, false, parent, \
EditAlarmDlg::RES_USE_EVENT_ID); + // Use AutoQPointer to guard against crash on \
application exit while + // the dialogue is still open. It prevents double deletion \
(both on + // deletion of parent, and on return from this function).
+ AutoQPointer<EditAlarmDlg> editDlg = EditAlarmDlg::create(false, event, false, \
parent, EditAlarmDlg::RES_USE_EVENT_ID); if (editDlg->exec() == QDialog::Accepted)
{
if (!AlarmCalendar::resources()->event(id))
@@ -1044,7 +1055,6 @@
outputAlarmWarnings(editDlg, &newEvent);
}
- delete editDlg;
}
/******************************************************************************
@@ -1085,13 +1095,18 @@
{
if (AlarmCalendar::resources()->eventReadOnly(event->id()))
{
- // The template is read-only, so make the dialogue read-only
- EditAlarmDlg* editDlg = EditAlarmDlg::create(true, event, false, parent, \
EditAlarmDlg::RES_PROMPT, true); + // The template is read-only, so make the \
dialogue read-only. + // Use AutoQPointer to guard against crash on \
application exit while + // the dialogue is still open. It prevents \
double deletion (both on + // deletion of parent, and on return from \
this function). + AutoQPointer<EditAlarmDlg> editDlg = \
EditAlarmDlg::create(true, event, false, parent, EditAlarmDlg::RES_PROMPT, true); \
editDlg->exec();
- delete editDlg;
return;
}
- EditAlarmDlg* editDlg = EditAlarmDlg::create(true, event, false, parent, \
EditAlarmDlg::RES_USE_EVENT_ID); + // Use AutoQPointer to guard against crash \
on application exit while + // the dialogue is still open. It prevents double \
deletion (both on + // deletion of parent, and on return from this function).
+ AutoQPointer<EditAlarmDlg> editDlg = EditAlarmDlg::create(true, event, \
false, parent, EditAlarmDlg::RES_USE_EVENT_ID); if (editDlg->exec() == \
QDialog::Accepted) {
KAEvent newEvent;
@@ -1105,7 +1120,6 @@
updateTemplate(newEvent, editDlg);
Undo::saveEdit(undo, newEvent);
}
- delete editDlg;
}
/******************************************************************************
@@ -1113,9 +1127,11 @@
*/
void viewAlarm(const KAEvent* event, QWidget* parent)
{
- EditAlarmDlg* editDlg = EditAlarmDlg::create(false, event, false, parent, \
EditAlarmDlg::RES_PROMPT, true); + // Use AutoQPointer to guard against crash \
on application exit while + // the dialogue is still open. It prevents double \
deletion (both on + // deletion of parent, and on return from this function).
+ AutoQPointer<EditAlarmDlg> editDlg = EditAlarmDlg::create(false, event, \
false, parent, EditAlarmDlg::RES_PROMPT, true); editDlg->exec();
- delete editDlg;
}
/******************************************************************************
--- trunk/KDE/kdepim/kalarm/lib/autoqpointer.h #986010:986011
@@ -37,6 +37,8 @@
AutoQPointer(T* p) : QPointer<T>(p) {}
AutoQPointer(const QPointer<T>& p) : QPointer<T>(p) {}
~AutoQPointer() { delete this->data(); }
+ AutoQPointer<T>& operator=(const AutoQPointer<T>& p) { QPointer<T>::operator=(p); \
return *this; } + AutoQPointer<T>& operator=(T* p) { QPointer<T>::operator=(p); \
return *this; } };
#endif // AUTOQPOINTER_H
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic