aboutsummaryrefslogtreecommitdiffhomepage
path: root/tag-util.c
diff options
context:
space:
mode:
authorGravatar David Bremner <bremner@debian.org>2012-12-16 15:58:15 -0400
committerGravatar David Bremner <bremner@debian.org>2012-12-22 23:13:15 -0400
commitba4e8565294fc0a197b4c08082ad912c31888008 (patch)
tree250da3d96d9a30668ac1e79077075a000419ce1f /tag-util.c
parent77b4ec70ecb9fdcbf9afd31f3663bd0135806bda (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.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/tag-util.c b/tag-util.c
index eab482f3..705b7baa 100644
--- a/tag-util.c
+++ b/tag-util.c
@@ -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");