Bug 57618 - [GTK] Main loop sources are leaked in RunLoopGtk
Summary: [GTK] Main loop sources are leaked in RunLoopGtk
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKit2 (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
Depends on:
Reported: 2011-04-01 05:39 PDT by Carlos Garcia Campos
Modified: 2011-04-04 01:52 PDT (History)
0 users

See Also:

Patch (5.45 KB, patch)
2011-04-01 05:51 PDT, Carlos Garcia Campos
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Carlos Garcia Campos 2011-04-01 05:39:36 PDT
g_source_attach() increments the source ref counter, we should use a GRefPtr for the sources to make sure they are freed. g_source_destroy() doesn't free the source, it marks the source as destroyed and decrements the reference counter, even though the source can't be used anymore, it won't be freed until ref counter is 0.
Comment 1 Carlos Garcia Campos 2011-04-01 05:51:25 PDT
Created attachment 87847 [details]

Patch to fix the leaks.
Comment 2 Martin Robinson 2011-04-01 10:01:30 PDT
Comment on attachment 87847 [details]

View in context: https://bugs.webkit.org/attachment.cgi?id=87847&action=review

Great work. Please consider the method name changes below before landing.

> Source/WebKit2/Platform/gtk/RunLoopGtk.cpp:95
> +void RunLoop::TimerBase::reset()

I think the name clearTimerSource better describes what this one does.

> Source/WebKit2/Platform/gtk/RunLoopGtk.cpp:100
> +void RunLoop::TimerBase::resetTimerSource(RunLoop::TimerBase* timer)

Please call this one destroyNotifyCallback to make it clear that this is just used as a callback.

> Source/WebKit2/Platform/gtk/RunLoopGtk.cpp:105
> +gboolean RunLoop::TimerBase::timerFired(RunLoop::TimerBase* timer)

Please call this one timerFiredCallback.
Comment 3 Carlos Garcia Campos 2011-04-04 01:51:16 PDT
Committed r82805: <http://trac.webkit.org/changeset/82805>