[prev in list] [next in list] [prev in thread] [next in thread]
List: git
Subject: Re: [PATCH 02/14] log: refactor add_header to drop some magic numbers
From: Eric Sunshine <sunshine () sunshineco ! com>
Date: 2015-12-31 6:21:42
Message-ID: CAPig+cRgK5Ey8WNDLLOnAhR+xh6NEHk-hGhGccj4SkZO-RV_-Q () mail ! gmail ! com
[Download RAW message or body]
On Tue, Dec 29, 2015 at 2:20 AM, Jeff King <peff@peff.net> wrote:
> We want to chomp newlines off the end of the "value" string.
> But because it's const, we must track its length rather than
> writing a NUL. This leads to us having to tweak that length
> later, to account for moving the pointer forward.
>
> Since we are about to create a copy of it anyway, let's just
> wait and chomp at the end.
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> diff --git a/builtin/log.c b/builtin/log.c
> @@ -675,21 +675,18 @@ static struct string_list extra_cc;
> static void add_header(const char *value)
> {
> struct string_list_item *item;
> - int len = strlen(value);
> - while (len && value[len - 1] == '\n')
> - len--;
> + size_t len;
>
> - if (!strncasecmp(value, "to: ", 4)) {
> + if (!strncasecmp(value, "to: ", 4))
> item = string_list_append(&extra_to, value + 4);
> - len -= 4;
> - } else if (!strncasecmp(value, "cc: ", 4)) {
> + else if (!strncasecmp(value, "cc: ", 4))
> item = string_list_append(&extra_cc, value + 4);
> - len -= 4;
> - } else {
> + else
> item = string_list_append(&extra_hdr, value);
> - }
>
> - item->string[len] = '\0';
> + len = strlen(item->string);
> + while (len && item->string[len - 1] == '\n')
> + item->string[--len] = '\0';
Not a strong objection, but this implementation may make the reader
wonder why NUL needs to be assigned to all "stripped" characters. I'd
have expected to see:
len = strlen(item->string);
while (len && item->string[len - 1] == '\n')
len--;
item->string[len] = '\0';
which indicates clearly that this is a simple truncation rather than
some odd NUL-fill operation, and is slightly more easy to reason about
since it doesn't involve a pre-decrement as an array subscript.
> }
>
> #define THREAD_SHALLOW 1
> --
> 2.7.0.rc3.367.g09631da
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic