Review Request 118639: KCMultiDialog: Fix crash when clicking OK

Aurélien Gâteau agateau at kde.org
Tue Jun 10 22:29:04 UTC 2014



> On June 10, 2014, 10:34 p.m., David Edmundson wrote:
> > Is this the cause of https://bugs.kde.org/show_bug.cgi?id=334624 ?
> > 
> > This fix looks sensible to me.

I think it is, you are better at fishing bugs from bugzilla than I am :)


- Aurélien


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


On June 10, 2014, 10:45 p.m., Aurélien Gâteau wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/118639/
> -----------------------------------------------------------
> 
> (Updated June 10, 2014, 10:45 p.m.)
> 
> 
> Review request for KDE Frameworks.
> 
> 
> Bugs: 334624
>     https://bugs.kde.org/show_bug.cgi?id=334624
> 
> 
> Repository: kcmutils
> 
> 
> Description
> -------
> 
> When one closes KCMultiDialog with OK, QDialog::finished() can be emitted before the clicked() signal of the OK button. This causes the following sequence to happen:
> 
> - KCMultiDialogPrivate::_k_dialogClosed
>   * deletes the KCModule
>     - KCModuleProxyPrivate::_k_moduleDestroyed
>       * sets kcm to 0
> 
> - KCMultiDialog::slotOkClicked
>   - KCMultiDialogPrivate::apply
>     - KCModuleProxy::save
>       - KCModuleProxyPrivate::realModule
>         * notices kcm is 0, so recreates it
>         * calls kcm->save()
>           - KWinDesktopConfig::save()
>             * crashes because it expects kcm->load() to have been called
> 
> To avoid this, trigger the cleanup code in closeEvent() rather than when finished() is emitted, as we can be sure closeEvent() is always called *after* the methods connected to the button box signals has executed.
> 
> 
> Diffs
> -----
> 
>   src/kcmultidialog.h 72e45a5 
>   src/kcmultidialog.cpp 478c25a 
> 
> Diff: https://git.reviewboard.kde.org/r/118639/diff/
> 
> 
> Testing
> -------
> 
> Configuring virtual desktops does not crash anymore
> 
> 
> Thanks,
> 
> Aurélien Gâteau
> 
>

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


More information about the Kde-frameworks-devel mailing list