diff options
author | David Bremner <bremner@debian.org> | 2012-12-16 15:58:15 -0400 |
---|---|---|
committer | David Bremner <bremner@debian.org> | 2012-12-22 23:13:15 -0400 |
commit | ba4e8565294fc0a197b4c08082ad912c31888008 (patch) | |
tree | 250da3d96d9a30668ac1e79077075a000419ce1f /tag-util.c | |
parent | 77b4ec70ecb9fdcbf9afd31f3663bd0135806bda (diff) |
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.
Diffstat (limited to 'tag-util.c')
-rw-r--r-- | tag-util.c | 9 |
1 files changed, 4 insertions, 5 deletions
@@ -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"); |