Re: [PATCH 01/13] dir: allow exclusions from blob in addition to file
- From
Eric Sunshine <sunshine@sunshineco.com>
- Date
- Oct 25, 2017, 04:05 UTC
- Message-ID
- <CAPig+cSPwSq1s5EhnQA+K-zQJ_+LrTLJFA9n8fj+W9jtdpA+PQ@mail.gmail.com>
- In-Reply-To
- <20171024185332.57261-2-git@jeffhostetler.com>
On Tue, Oct 24, 2017 at 2:53 PM, Jeff Hostetler <git@jeffhostetler.com> wrote:
Show 40 quoted lines
> Refactor add_excludes() to separate the reading of the
> exclude file into a buffer and the parsing of the buffer
> into exclude_list items.
>
> Add add_excludes_from_blob_to_list() to allow an exclude
> file be specified with an OID.
>
> Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
> ---
> diff --git a/dir.c b/dir.c
> @@ -841,6 +856,38 @@ int add_excludes_from_file_to_list(const char *fname, const char *base,
> +int add_excludes_from_blob_to_list(
> + struct object_id *oid,
> + const char *base, int baselen,
> + struct exclude_list *el)
> +{
> + char *buf;
> + unsigned long size;
> + enum object_type type;
> +
> + buf = read_sha1_file(oid->hash, &type, &size);
> + if (!buf)
> + return -1;
> +
> + if (type != OBJ_BLOB) {
> + free(buf);
> + return -1;
> + }
> +
> + if (size == 0) {
> + free(buf);
> + return 0;
> + }
> +
> + if (buf[size - 1] != '\n') {
> + buf = xrealloc(buf, st_add(size, 1));
> + buf[size++] = '\n';
> + }
> +
> + add_excludes_from_buffer(buf, size, base, baselen, el);Seeing all the free()'s above, at first glance, one wonders why 'buf' isn't freed here after add_excludes_from_buffer(), however an examination of that function shows that 'buf' is assigned to el->filebuf and later freed by clear_exclude_list(). Okay.
> + return 0;
Should this be returning the result of add_excludes_from_buffer() rather than unconditionally returning 0?
> +}