mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 20:08:10 +01:00
Fix memory leak in notmuch_thread_results_t
If we were using a talloc-based resizing array then this wouldn't have happened. Of course, thanks to valgrind for catching this.
This commit is contained in:
parent
3dce200788
commit
1726c5c814
1 changed files with 14 additions and 1 deletions
15
query.cc
15
query.cc
|
@ -158,6 +158,18 @@ notmuch_query_search_messages (notmuch_query_t *query)
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Glib objects force use to use a talloc destructor as well, (but not
|
||||||
|
* nearly as ugly as the for message_results due to C++ objects). At
|
||||||
|
* this point, I'd really like to have some talloc-friendly
|
||||||
|
* equivalents for the few pieces of glib that I'm using. */
|
||||||
|
static int
|
||||||
|
_notmuch_thread_results_destructor (notmuch_thread_results_t *results)
|
||||||
|
{
|
||||||
|
g_ptr_array_free (results->thread_ids, TRUE);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
notmuch_thread_results_t *
|
notmuch_thread_results_t *
|
||||||
notmuch_query_search_threads (notmuch_query_t *query)
|
notmuch_query_search_threads (notmuch_query_t *query)
|
||||||
{
|
{
|
||||||
|
@ -175,6 +187,8 @@ notmuch_query_search_threads (notmuch_query_t *query)
|
||||||
thread_results->thread_ids = g_ptr_array_new ();
|
thread_results->thread_ids = g_ptr_array_new ();
|
||||||
thread_results->index = 0;
|
thread_results->index = 0;
|
||||||
|
|
||||||
|
talloc_set_destructor (thread_results, _notmuch_thread_results_destructor);
|
||||||
|
|
||||||
seen = g_hash_table_new_full (g_str_hash, g_str_equal,
|
seen = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||||
free, NULL);
|
free, NULL);
|
||||||
|
|
||||||
|
@ -285,6 +299,5 @@ notmuch_thread_results_advance (notmuch_thread_results_t *results)
|
||||||
void
|
void
|
||||||
notmuch_thread_results_destroy (notmuch_thread_results_t *results)
|
notmuch_thread_results_destroy (notmuch_thread_results_t *results)
|
||||||
{
|
{
|
||||||
g_ptr_array_free (results->thread_ids, TRUE);
|
|
||||||
talloc_free (results);
|
talloc_free (results);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue