mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-23 19:38:07 +01:00
tag-utils: use the tag_opt_list_t as talloc context, if possible.
The memory usage discipline of tag_op_list_t is never to free the internal array of tag operations before freeing the whole list, so it makes sense to take advantage of hierarchical de-allocation by talloc. By not relying on the context passed into tag_parse_line, we can allow tag_op_list_t structures to live longer than that context.
This commit is contained in:
parent
77b4ec70ec
commit
ba4e856529
3 changed files with 6 additions and 8 deletions
|
@ -105,7 +105,7 @@ parse_sup_line (void *ctx, char *line,
|
|||
tok_len++;
|
||||
}
|
||||
|
||||
if (tag_op_list_append (ctx, tag_ops, tok, FALSE))
|
||||
if (tag_op_list_append (tag_ops, tok, FALSE))
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
|
@ -109,7 +109,7 @@ parse_tag_line (void *ctx, char *line,
|
|||
goto DONE;
|
||||
}
|
||||
|
||||
if (tag_op_list_append (ctx, tag_ops, tag, remove)) {
|
||||
if (tag_op_list_append (tag_ops, tag, remove)) {
|
||||
ret = line_error (TAG_PARSE_OUT_OF_MEMORY, line_for_error,
|
||||
"aborting");
|
||||
goto DONE;
|
||||
|
@ -294,7 +294,7 @@ tag_op_list_create (void *ctx)
|
|||
list->size = TAG_OP_LIST_INITIAL_SIZE;
|
||||
list->count = 0;
|
||||
|
||||
list->ops = talloc_array (ctx, tag_operation_t, list->size);
|
||||
list->ops = talloc_array (list, tag_operation_t, list->size);
|
||||
if (list->ops == NULL)
|
||||
return NULL;
|
||||
|
||||
|
@ -303,8 +303,7 @@ tag_op_list_create (void *ctx)
|
|||
|
||||
|
||||
int
|
||||
tag_op_list_append (void *ctx,
|
||||
tag_op_list_t *list,
|
||||
tag_op_list_append (tag_op_list_t *list,
|
||||
const char *tag,
|
||||
notmuch_bool_t remove)
|
||||
{
|
||||
|
@ -314,7 +313,7 @@ tag_op_list_append (void *ctx,
|
|||
|
||||
if (list->count == list->size) {
|
||||
list->size *= 2;
|
||||
list->ops = talloc_realloc (ctx, list->ops, tag_operation_t,
|
||||
list->ops = talloc_realloc (list, list->ops, tag_operation_t,
|
||||
list->size);
|
||||
if (list->ops == NULL) {
|
||||
fprintf (stderr, "Out of memory.\n");
|
||||
|
|
|
@ -87,8 +87,7 @@ tag_op_list_create (void *ctx);
|
|||
*/
|
||||
|
||||
int
|
||||
tag_op_list_append (void *ctx,
|
||||
tag_op_list_t *list,
|
||||
tag_op_list_append (tag_op_list_t *list,
|
||||
const char *tag,
|
||||
notmuch_bool_t remove);
|
||||
|
||||
|
|
Loading…
Reference in a new issue