From ea301102abc55404b8b447cd50998429bfbbf9fd Mon Sep 17 00:00:00 2001 From: David Bremner Date: Fri, 18 Jun 2021 21:59:43 -0300 Subject: [PATCH] lib: write talloc report in notmuch_database_destroy Since most memory allocation is (ultimately) in the talloc context defined by a notmuch_database_t pointer, this gives a more complete view of memory still allocated at program shutdown. We also change the talloc report in notmuch.c to mode "a" to avoid clobbering the newly reported log. --- lib/database.cc | 9 +++++++++ notmuch.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/database.cc b/lib/database.cc index 96458f6f..0052cb65 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -733,6 +733,15 @@ notmuch_status_t notmuch_database_destroy (notmuch_database_t *notmuch) { notmuch_status_t status; + const char* talloc_report; + + talloc_report = getenv ("NOTMUCH_TALLOC_REPORT"); + if (talloc_report && strcmp (talloc_report, "") != 0) { + FILE *report = fopen (talloc_report, "a"); + if (report) { + talloc_report_full (notmuch, report); + } + } status = notmuch_database_close (notmuch); diff --git a/notmuch.c b/notmuch.c index d0a94fc2..1404b70c 100644 --- a/notmuch.c +++ b/notmuch.c @@ -589,7 +589,7 @@ main (int argc, char *argv[]) * talloc_enable_null_tracking */ - FILE *report = fopen (talloc_report, "w"); + FILE *report = fopen (talloc_report, "a"); if (report) { talloc_report_full (NULL, report); } else {