Return-Path: X-Original-To: notmuch@notmuchmail.org Delivered-To: notmuch@notmuchmail.org Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 2A56A431FD2 for ; Sun, 16 Dec 2012 12:16:59 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: 0 X-Spam-Level: X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 04kUdoSJ2jec for ; Sun, 16 Dec 2012 12:16:58 -0800 (PST) Received: from tesseract.cs.unb.ca (tesseract.cs.unb.ca [131.202.240.238]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by olra.theworths.org (Postfix) with ESMTPS id F3C9D431FC4 for ; Sun, 16 Dec 2012 12:16:57 -0800 (PST) Received: from fctnnbsc30w-142167090129.dhcp-dynamic.fibreop.nb.bellaliant.net ([142.167.90.129] helo=zancas.localnet) by tesseract.cs.unb.ca with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1TkKdt-0007tb-0F; Sun, 16 Dec 2012 16:16:57 -0400 Received: from bremner by zancas.localnet with local (Exim 4.80) (envelope-from ) id 1TkKdn-00050b-I9; Sun, 16 Dec 2012 16:16:51 -0400 From: david@tethera.net To: notmuch@notmuchmail.org Subject: [PATCH 1/3] tag-utils: use the tag_opt_list_t as talloc context, if possible. Date: Sun, 16 Dec 2012 16:16:35 -0400 Message-Id: <1355688997-19164-2-git-send-email-david@tethera.net> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1355688997-19164-1-git-send-email-david@tethera.net> References: <1355688997-19164-1-git-send-email-david@tethera.net> X-Spam_bar: - Cc: David Bremner X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Dec 2012 20:16:59 -0000 From: David Bremner 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