On Sat, 28 Jan 2017, David Bremner <david@tethera.net> wrote: > It turns out this is exactly what release() is for; Xapian will > deallocate the objects when it's done with them. release() fares 2 on Rusty scale [1][2]... after digging through source, LGTM. BR, Jani. [1] http://ozlabs.org/~rusty/index.cgi/tech/2008-03-30.html [2] http://ozlabs.org/~rusty/index.cgi/tech/2008-04-01.html > --- > lib/database-private.h | 4 ---- > lib/database.cc | 19 ++++++++----------- > 2 files changed, 8 insertions(+), 15 deletions(-) > > diff --git a/lib/database-private.h b/lib/database-private.h > index 32357ce0..3eac3c7e 100644 > --- a/lib/database-private.h > +++ b/lib/database-private.h > @@ -194,10 +194,6 @@ struct _notmuch_database { > Xapian::TermGenerator *term_gen; > Xapian::ValueRangeProcessor *value_range_processor; > Xapian::ValueRangeProcessor *date_range_processor; > -#if HAVE_XAPIAN_FIELD_PROCESSOR > - Xapian::FieldProcessor *date_field_processor; > - Xapian::FieldProcessor *query_field_processor; > -#endif > Xapian::ValueRangeProcessor *last_mod_range_processor; > }; > > diff --git a/lib/database.cc b/lib/database.cc > index b98468a6..c1563ca7 100644 > --- a/lib/database.cc > +++ b/lib/database.cc > @@ -1029,10 +1029,14 @@ notmuch_database_open_verbose (const char *path, > #if HAVE_XAPIAN_FIELD_PROCESSOR > /* This currently relies on the query parser to pass anything > * with a .. to the range processor */ > - notmuch->date_field_processor = new DateFieldProcessor(); > - notmuch->query_parser->add_boolean_prefix("date", notmuch->date_field_processor); > - notmuch->query_field_processor = new QueryFieldProcessor (*notmuch->query_parser, notmuch); > - notmuch->query_parser->add_boolean_prefix("query", notmuch->query_field_processor); > + { > + Xapian::FieldProcessor * date_fp = new DateFieldProcessor(); > + Xapian::FieldProcessor * query_fp = > + new QueryFieldProcessor (*notmuch->query_parser, notmuch); > + > + notmuch->query_parser->add_boolean_prefix("date", date_fp->release ()); > + notmuch->query_parser->add_boolean_prefix("query", query_fp->release ()); > + } > #endif > notmuch->last_mod_range_processor = new Xapian::NumberValueRangeProcessor (NOTMUCH_VALUE_LAST_MOD, "lastmod:"); > > @@ -1125,13 +1129,6 @@ notmuch_database_close (notmuch_database_t *notmuch) > delete notmuch->last_mod_range_processor; > notmuch->last_mod_range_processor = NULL; > > -#if HAVE_XAPIAN_FIELD_PROCESSOR > - delete notmuch->date_field_processor; > - notmuch->date_field_processor = NULL; > - delete notmuch->query_field_processor; > - notmuch->query_field_processor = NULL; > -#endif > - > return status; > } > > -- > 2.11.0 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > https://notmuchmail.org/mailman/listinfo/notmuch