[PATCH] lib: add talloc reference from string map iterator to map
Tomi Ollila
tomi.ollila at iki.fi
Sat Sep 24 02:54:48 PDT 2016
On Fri, Sep 23 2016, David Bremner <david at tethera.net> wrote:
> This is needed so that when the map is modified during traversal, and
> thus unlinked by the database code, the map is not disposed of until the
> iterator is done with it.
> ---
>
> According to my obviously fallible memory, this was always intended to
> work something like this. For me, this change fixes the test failures
> in T610 on Debian stable. The same bad behaviour is visible by running
> T610/test6 under valgrind even in places where the test passes.
For me the test pass on Scientific Linux 6.2, Ubuntu 16.04 and Fedora 24.
I tried to run this under valgrind ( ./T610-message-property.sh --valgrind )
but got so noisy output that I could not resolve anything definite from it.
Also /T600-named-queries.sh --val printed noisy output -- but perhaps
the noise difference (less there) can inform something.
Anyway, this seems to fix a bug that might affect someone, and at least
the situation is better with this so this should be pushed soon...
Btw: does 'Debian stable' refer to Debian 8.6(+) -- just for the record
anyone reading this message years from now :D
> lib/string-map.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/lib/string-map.c b/lib/string-map.c
> index 591ff6d..0bb77e9 100644
> --- a/lib/string-map.c
> +++ b/lib/string-map.c
> @@ -170,6 +170,9 @@ _notmuch_string_map_iterator_create (notmuch_string_map_t *map, const char *key,
> if (unlikely (iter == NULL))
> return NULL;
>
> + if (unlikely (talloc_reference (iter, map) == NULL))
> + return NULL;
> +
> iter->key = talloc_strdup (iter, key);
> iter->exact = exact;
> iter->current = bsearch_first (map->pairs, map->length, key, exact);
> --
> 2.1.4
More information about the notmuch
mailing list