Review Request 123731: Cleanup handling of notifications closing

Martin Klapetek martin.klapetek at gmail.com
Tue May 12 11:59:50 UTC 2015


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/123731/
-----------------------------------------------------------

Review request for KDE Frameworks.


Repository: knotifications


Description
-------

While investigating the cause of crash of https://bugs.kde.org/show_bug.cgi?id=342752 I've come across some loose ends in how KNotifications is handling closing of notifications.

As for the crash itself, I never managed to reproduce even with special written test cases, but what happens (or seem to) is this:
 * KNotification object gets deleted
 * The destructor calls close() on all plugins
 * The NotifyByPopup plugin does async dbus call to close the notification and returns
 * KNotification's dpointer is deleted
 * The DBus reply returns, calling NotifyByPopup::finished()
 * Now for some reason the KNotification object is still not null but its dpointer is gone, so the check "if (!notification || d->notifications.contains(notification->id()))" crashes on the notification->id() call

So I've made it simply return -1 when dpointer is null, which should ideally prevent the crashes


Diffs
-----

  src/knotification.cpp 01962b3 
  src/knotificationmanager.cpp 0d9b3b0 
  src/knotificationmanager_p.h f8e7df8 
  src/notifybypopup.cpp 2f84ab0 

Diff: https://git.reviewboard.kde.org/r/123731/diff/


Testing
-------


Thanks,

Martin Klapetek

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20150512/f9f44402/attachment.html>


More information about the Kde-frameworks-devel mailing list