Bug 57618

Summary: [GTK] Main loop sources are leaked in RunLoopGtk
Product: WebKit Reporter: Carlos Garcia Campos <cgarcia>
Component: WebKit2Assignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal    
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: Linux   
Attachments:
Description Flags
Patch none

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

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

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>