git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Adam Spiers <git@adamspiers.org>
Cc: git list <git@vger.kernel.org>
Subject: Re: [PATCH 1/5] check-ignore: move setup into cmd_check_ignore()
Date: Thu, 11 Apr 2013 01:25:53 -0400	[thread overview]
Message-ID: <20130411052553.GA28915@sigill.intra.peff.net> (raw)
In-Reply-To: <1365645575-11428-1-git-send-email-git@adamspiers.org>

On Thu, Apr 11, 2013 at 02:59:31AM +0100, Adam Spiers wrote:

> Initialisation of the dir_struct and path_exclude_check structs was
> previously done within check_ignore().  This was acceptable since
> check_ignore() was only called once per check-ignore invocation;
> however the next commit will convert it into an inner loop which is
> called once per line of STDIN when --stdin is given.  Therefore moving
> the initialisation code out into cmd_check_ignore() ensures that
> initialisation is still only performed once per check-ignore
> invocation, and consequently that the output is identical whether
> pathspecs are provided as CLI arguments or via STDIN.
> 
> Signed-off-by: Adam Spiers <git@adamspiers.org>
> ---
>  builtin/check-ignore.c | 39 ++++++++++++++++++++-------------------
>  1 file changed, 20 insertions(+), 19 deletions(-)
> 
> diff --git a/builtin/check-ignore.c b/builtin/check-ignore.c
> index 0240f99..0a4eef1 100644
> --- a/builtin/check-ignore.c
> +++ b/builtin/check-ignore.c
> @@ -53,30 +53,20 @@ static void output_exclude(const char *path, struct exclude *exclude)
>  	}
>  }
>  
> -static int check_ignore(const char *prefix, const char **pathspec)
> +static int check_ignore(struct path_exclude_check check,
> +			const char *prefix, const char **pathspec)

Did you mean to pass the struct by value here? If it is truly a per-path
value, shouldn't it be declared and initialized inside here? Otherwise
you risk one invocation munging things that the struct points to, but
the caller's copy does not know about the change.

In particular, I see that the struct includes a strbuf. What happens
when one invocation of check_ignore grows the strbuf, then returns? The
copy of the struct in the caller will not know that the buffer it is
pointing to is now bogus.

> -static int check_ignore_stdin_paths(const char *prefix)
> +static int check_ignore_stdin_paths(struct path_exclude_check check, const char *prefix)

Ditto here.

-Peff

  parent reply	other threads:[~2013-04-11  5:26 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-08 18:13 RFC: two minor tweaks to check-ignore to help git-annex assistant Adam Spiers
2013-04-08 21:56 ` Junio C Hamano
2013-04-08 22:20 ` Jeff King
2013-04-11  1:59 ` [PATCH 1/5] check-ignore: move setup into cmd_check_ignore() Adam Spiers
2013-04-11  1:59   ` [PATCH 2/5] check-ignore: allow incremental streaming of queries via --stdin Adam Spiers
2013-04-11  5:31     ` Jeff King
2013-04-11 10:55       ` Adam Spiers
2013-04-11 11:20     ` Adam Spiers
2013-04-11 18:33       ` Jeff King
2013-04-11  1:59   ` [PATCH 3/5] Documentation: add caveats about I/O buffering for check-{attr,ignore} Adam Spiers
2013-04-11  5:31     ` Jeff King
2013-04-11  1:59   ` [PATCH 4/5] t0008: remove duplicated test fixture data Adam Spiers
2013-04-11  1:59   ` [PATCH 5/5] check-ignore: add -n / --non-matching option Adam Spiers
2013-04-11  5:25   ` Jeff King [this message]
2013-04-11 11:05     ` [PATCH 1/5] check-ignore: move setup into cmd_check_ignore() Adam Spiers
2013-04-11 12:05       ` [PATCH v2 1/5] t0008: remove duplicated test fixture data Adam Spiers
2013-04-11 12:05         ` [PATCH v2 2/5] check-ignore: add -n / --non-matching option Adam Spiers
2013-04-11 12:05         ` [PATCH v2 3/5] check-ignore: move setup into cmd_check_ignore() Adam Spiers
2013-04-11 12:05         ` [PATCH v2 4/5] check-ignore: allow incremental streaming of queries via --stdin Adam Spiers
2013-04-11 19:11           ` Jeff King
2013-04-11 20:31             ` Adam Spiers
2013-04-11 20:40               ` Jeff King
2013-04-22 18:03               ` Junio C Hamano
2013-04-24  8:02                 ` Adam Spiers
2013-04-29 22:55                   ` [PATCH] t0008: use named pipe (FIFO) to test check-ignore streaming Adam Spiers
2013-04-11 21:04           ` [PATCH v2 4/5] check-ignore: allow incremental streaming of queries via --stdin Aaron Schrab
2013-04-11 22:55             ` Adam Spiers
2013-04-11 12:05         ` [PATCH v2 5/5] Documentation: add caveats about I/O buffering for check-{attr,ignore} Adam Spiers
2013-04-11 18:09           ` Junio C Hamano
2013-04-11 20:12             ` [PATCH v3 " Adam Spiers
2013-04-12  2:12               ` Junio C Hamano
2013-04-12 11:00                 ` Adam Spiers
2013-04-11 18:35       ` [PATCH 1/5] check-ignore: move setup into cmd_check_ignore() Jeff King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130411052553.GA28915@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@adamspiers.org \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).