fetcher: Explicitly join thread if it's not self

This fixes a valgrind leak; see [this StackOverflow thread](http://stackoverflow.com/questions/17642433/why-pthread-causes-a-memory-leak).

Closes: #410
Approved by: giuseppe
This commit is contained in:
Colin Walters 2016-07-24 15:11:17 -04:00 committed by Atomic Bot
parent 544365f834
commit ba21023d6c
1 changed files with 8 additions and 1 deletions

View File

@ -540,7 +540,14 @@ _ostree_fetcher_finalize (GObject *object)
/* Terminate the session thread. */
g_main_loop_quit (self->thread_closure->main_loop);
g_clear_pointer (&self->session_thread, g_thread_unref);
if (self->session_thread)
{
/* We need to explicitly synchronize to clean up TLS */
if (self->session_thread != g_thread_self ())
g_thread_join (self->session_thread);
else
g_clear_pointer (&self->session_thread, g_thread_unref);
}
g_clear_pointer (&self->thread_closure, thread_closure_unref);
G_OBJECT_CLASS (_ostree_fetcher_parent_class)->finalize (object);