Re: [PATCH v2 04/10] index: implement notmuch_indexopts_t with try_decrypt

Subject: Re: [PATCH v2 04/10] index: implement notmuch_indexopts_t with try_decrypt

Date: Mon, 09 Oct 2017 23:45:21 -0400

To: Jani Nikula, Notmuch Mail

Cc:

From: Daniel Kahn Gillmor


On Sat 2017-09-23 19:10:18 +0300, Jani Nikula wrote:
>> --- a/lib/indexopts.c
>> +++ b/lib/indexopts.c
>> @@ -21,9 +21,27 @@
>>  #include "notmuch-private.h"
>>  
>>  notmuch_indexopts_t *
>> -notmuch_database_get_default_indexopts (notmuch_database_t unused (*db))
>> +notmuch_database_get_default_indexopts (notmuch_database_t *db)
>>  {
>> -    return NULL;
>> +    return talloc_zero (db, notmuch_indexopts_t);
>
> I wonder about the lifetime of indexopts. Should default indexopts be
> part of the db object, so that your caller above doesn't have to
> alloc/destroy it for every file?

The caller doesn't have to alloc/destroy it for every file, they can
alloc it once and pass it in for every file.

I'd rather not have the indexopts be part of the db object itself
explicitly, because i can imagine a longer-running program wanting to
create two indexopts objects, configuring them differently, and re-using
one or the other without wanting to modify the database itself.

> Our library interface has a leaky abstraction of the talloc hierarchical
> refcounting. We don't talk about it in any of the docs, some of it is
> implied, most of it is completely surprising if the library interface
> user assumes a traditional C memory allocation model without
> refcounting.

right, probably the most surprising thing would be if the user got a
default indexopts from one database object, and then tried to apply it
to another database object, after having deleted the first database
object.

However, we *do* talk about it in the docs now, so i think we've given
fair warning:

-------------
/**
 * get the current default indexing options for a given database.
 *
 * This object will survive until the database itself is destroyed,
 * but the caller may also release it earlier with
 * notmuch_indexopts_destroy.
 *
 * This object represents a set of options on how a message can be
 * added to the index.  At the moment it is a featureless stub.
 *
 * @since libnotmuch 5.1 (notmuch 0.26)
 */
notmuch_indexopts_t *
notmuch_database_get_default_indexopts (notmuch_database_t *db);
-------------

    --dkg
signature.asc (application/pgp-signature)
_______________________________________________
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch

Thread: