David Bremner <david@tethera.net> writes: > The two g_hash_table functions (insert, add) have different behaviour > with respect to existing keys. g_hash_table_insert frees the new key, > while g_hash_table_add (which is really g_hash_table_replace in > disguise) frees the existing key. With this change 'ref' is live until > the end of the function (assuming single-threaded access to > 'hash'). We can't guarantee it will continue to be live in the > future (i.e. there may be a future key duplication) so we copy it with > the allocation context passed to parse_references (in practice this is > the notmuch_message_t object whose parents we are finding). > > Thanks to Tomi for the simpler approach to the problem based on > reading the fine glib manual. pushed to master and release d