mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-27 13:17:56 +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++;
|
tok_len++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tag_op_list_append (ctx, tag_ops, tok, FALSE))
|
if (tag_op_list_append (tag_ops, tok, FALSE))
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ parse_tag_line (void *ctx, char *line,
|
||||||
goto DONE;
|
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,
|
ret = line_error (TAG_PARSE_OUT_OF_MEMORY, line_for_error,
|
||||||
"aborting");
|
"aborting");
|
||||||
goto DONE;
|
goto DONE;
|
||||||
|
@ -294,7 +294,7 @@ tag_op_list_create (void *ctx)
|
||||||
list->size = TAG_OP_LIST_INITIAL_SIZE;
|
list->size = TAG_OP_LIST_INITIAL_SIZE;
|
||||||
list->count = 0;
|
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)
|
if (list->ops == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -303,8 +303,7 @@ tag_op_list_create (void *ctx)
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
tag_op_list_append (void *ctx,
|
tag_op_list_append (tag_op_list_t *list,
|
||||||
tag_op_list_t *list,
|
|
||||||
const char *tag,
|
const char *tag,
|
||||||
notmuch_bool_t remove)
|
notmuch_bool_t remove)
|
||||||
{
|
{
|
||||||
|
@ -314,7 +313,7 @@ tag_op_list_append (void *ctx,
|
||||||
|
|
||||||
if (list->count == list->size) {
|
if (list->count == list->size) {
|
||||||
list->size *= 2;
|
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);
|
list->size);
|
||||||
if (list->ops == NULL) {
|
if (list->ops == NULL) {
|
||||||
fprintf (stderr, "Out of memory.\n");
|
fprintf (stderr, "Out of memory.\n");
|
||||||
|
|
|
@ -87,8 +87,7 @@ tag_op_list_create (void *ctx);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int
|
int
|
||||||
tag_op_list_append (void *ctx,
|
tag_op_list_append (tag_op_list_t *list,
|
||||||
tag_op_list_t *list,
|
|
||||||
const char *tag,
|
const char *tag,
|
||||||
notmuch_bool_t remove);
|
notmuch_bool_t remove);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue