[PATCH] BUG: 182325 Crash in KDatePicker selectYearClicked()

Albert Astals Cid aacid at kde.org
Fri Apr 10 16:23:05 BST 2009


A Friday, 10 of April de 2009, Albert Astals Cid va escriure:
> A Friday, 10 of April de 2009, Christoph Feck va escriure:
> > Hello,
> >
> > Commit r834444 tried to fix the outside click issue using
> > WA_DeleteOnClose. The problem is that clicking outside of the year popup
> > causes the widget to be deleted without leaving the event loop. Then
> > later when the application exits, the KPopupFrame::exec() calls hide() on
> > the already deleted widget. (To reproduce the crash, open systemsettings
> > -> Date&Time, click on the year, click outside the year field that pops
> > up, then close
> > systemsettings.)
> >
> > This patch reverts r834444 and tries to fix it the right way.
> >
> > I am posting this for review because of two reasons:
> >
> > 1) Not sure if adding the hideEvent() handler to KPopupFrame is binary
> > compatible. AFAICT only recompiled subclasses benefit from the fix.
>
> It is _not_ binary compatible, you can try using a private event filter in
> kdatetable.

Correcting myself, it's binary compatible, just weird, techbase says

"You can reimplement virtual functions defined in one of the base classes if 
it is safe that programs linked with the prior version of the library call the 
implementation in the base class rather than the new one. This is tricky and 
might be dangerous. Think twice before doing it."

Albert

>
> > 2) The source somehow mentions[1] that KPopupFrame is used in multiple
> > code places, but I was not able to find any other location that would
> > need a similar fix. Anyone in the know? (note [1]: kdatetable.cpp, line
> > 832)
>
> http://lxr.kde.org/ident?i=KPopupFrame
>
> Albert
>
> > Thanks,
> > Christoph Feck (kdepepo)






More information about the kde-core-devel mailing list