@@ -64,6 +64,7 @@ mail_user_alloc_int(struct event *parent_event,
64
64
user -> refcount = 1 ;
65
65
user -> username = p_strdup (pool , username );
66
66
user -> unexpanded_set_parser = unexpanded_set_parser ;
67
+ settings_parser_ref (user -> unexpanded_set_parser );
67
68
user -> set_parser = settings_parser_dup (unexpanded_set_parser , pool );
68
69
user -> unexpanded_set =
69
70
settings_parser_get_root_set (unexpanded_set_parser ,
@@ -102,9 +103,12 @@ struct mail_user *mail_user_alloc(struct event *parent_event,
102
103
pool_t pool ;
103
104
104
105
pool = pool_alloconly_create (MEMPOOL_GROWING "mail user" , 16 * 1024 );
105
- return mail_user_alloc_int (parent_event , username ,
106
- settings_parser_dup (unexpanded_set_parser , pool ),
107
- pool );
106
+ struct setting_parser_context * set_parser =
107
+ settings_parser_dup (unexpanded_set_parser , pool );
108
+ struct mail_user * user =
109
+ mail_user_alloc_int (parent_event , username , set_parser , pool );
110
+ settings_parser_unref (& set_parser );
111
+ return user ;
108
112
}
109
113
110
114
static void
@@ -233,6 +237,8 @@ void mail_user_unref(struct mail_user **_user)
233
237
user -> v .deinit_pre (user );
234
238
user -> v .deinit (user );
235
239
} T_END ;
240
+ settings_parser_unref (& user -> set_parser );
241
+ settings_parser_unref (& user -> unexpanded_set_parser );
236
242
event_unref (& user -> event );
237
243
i_assert (user -> refcount == 1 );
238
244
pool_unref (& user -> pool );
0 commit comments