Review Request 118639: KCMultiDialog: Fix crash when clicking OK

Sebastian Kügler sebas at kde.org
Thu Jun 12 15:53:09 UTC 2014


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

Ship it!


Good catch!

I can confirm that this makes saving the values in the formats KCM work. The virtual desktop config doesn't crash for me without this patch, so can't confirm that this condition is fixed as well.

- Sebastian Kügler


On June 10, 2014, 8: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, 8: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/20140612/f6ca91ff/attachment.html>


More information about the Kde-frameworks-devel mailing list