[PATCH 1/3] tag-utils: use the tag_opt_list_t as talloc context, if possible.
From: David BremnerThis code is no less correct than the previous version, since it does not make sense for the array to live longer than the wrapping struct. 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. --- notmuch-restore.c |2 +- tag-util.c|9 - tag-util.h|3 +-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/notmuch-restore.c b/notmuch-restore.c index 40596a8..ae0ef45 100644 --- a/notmuch-restore.c +++ b/notmuch-restore.c @@ -102,7 +102,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; } diff --git a/tag-util.c b/tag-util.c index eab482f..705b7ba 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"); diff --git a/tag-util.h b/tag-util.h index 99b0fa0..c07bfde 100644 --- a/tag-util.h +++ b/tag-util.h @@ -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); -- 1.7.10.4
[PATCH 1/3] tag-utils: use the tag_opt_list_t as talloc context, if possible.
From: David Bremner brem...@debian.org This code is no less correct than the previous version, since it does not make sense for the array to live longer than the wrapping struct. 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. --- notmuch-restore.c |2 +- tag-util.c|9 - tag-util.h|3 +-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/notmuch-restore.c b/notmuch-restore.c index 40596a8..ae0ef45 100644 --- a/notmuch-restore.c +++ b/notmuch-restore.c @@ -102,7 +102,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; } diff --git a/tag-util.c b/tag-util.c index eab482f..705b7ba 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); diff --git a/tag-util.h b/tag-util.h index 99b0fa0..c07bfde 100644 --- a/tag-util.h +++ b/tag-util.h @@ -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); -- 1.7.10.4 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch