Crash in KRecentFilesAction related to KURL handling

Andras Mantia amantia at kde.org
Wed Dec 21 09:54:36 GMT 2005


On Wednesday 21 December 2005 10:44, Andras Mantia wrote:
> On Wednesday 21 December 2005 02:31, Thiago Macieira wrote:
> > I think it is now fixed. David fix it a week ago. I came up with a
> > similar solution today and only found out about David's fix when I
> > tried to commit and got an error of out-of-date sources.
>
> AFAIK David came up with the continuation of "my workaround" to use a
> copy of the KURL. The problem is this does not help. I have the crash
> with the current kdelibs.

Ok, I found a reason and committed the fix. What happened was:
- when selecting an existing entry, the urlSelected is emitted with a 
url from d->m_urls (d->m_urls[ text ]) (call this emittedURL)
- the connected slot to urlSelected call KRecentFilesAction::addURL, 
where d->m_urls.erase( title ) destroys the very same emittedURL and 
the KURL u = url assignment does not protect us at all. That only 
helped to avoid the crash in addURL itself, but I think the reason was 
the same, so I removed it now.
- if later in the slot emittedURL is used, it will crash.

The solution is to emit a copy in urlSelected, so the internal list of 
urls in d->m_urls can be freely modified and destroyed without hurting 
the application using KRecentFilesAction.

If you know about bug (aside of #118652) caused by this, let me know.

Andras
-- 
Quanta Plus developer - http://quanta.kdewebdev.org
K Desktop Environment - http://www.kde.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20051221/5400e12d/attachment.sig>


More information about the kde-core-devel mailing list