git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] commit.c: use strchrnul() to scan for one line

From
Junio C Hamano <gitster@pobox.com>
Date
May 16, 2016, 15:57 UTC
Message-ID
<xmqq1t523shk.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<alpine.DEB.2.20.1605160810020.3303@virtualbox>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 20 quoted lines
> On Sun, 15 May 2016, Junio C Hamano wrote:
>
>> diff --git a/commit.c b/commit.c
>> index 3f4f371..1f9ee8a 100644
>> --- a/commit.c
>> +++ b/commit.c
>> @@ -415,8 +415,7 @@ int find_commit_subject(const char *commit_buffer, const char **subject)
>>  		p++;
>>  	if (*p) {
>>  		p += 2;
>> -		for (eol = p; *eol && *eol != '\n'; eol++)
>> -			; /* do nothing */
>> +		eol = strchrnul(p, '\n');
>>  	} else
>>  		eol = p;
>
> ACK. This was my fault, when I introduced the code in 9509af68 (Make
> git-revert & git-cherry-pick a builtin, 2007-03-01). To be fair,
> strchrnul() was introduced only later, in 659c69c (Add strchrnul(),
> 2007-11-09).
Oh, there is no fault.

I was reading through attr.c to see how bad a work to revamp attribute lookup would look like, found a hand-rolled strchrnul() that predates the widespread use of the function, and looked for similar patterns while I was updating it. As there were many false positives (i.e. "Yes, this loop is looking for the end of line, but it does something else to the characters on the line while doing so, so it cannot become strchrnul()") that I needed eyeballing in order to reject and avoid incorrect conversion, it is very much appreciated that you double-checked this one that I spotted.

Thanks.
Previous: Johannes Schindelin
Message 3 of 3 in “commit.c: use strchrnul() to scan for one line”
  1. commit.c: use strchrnul() to scan for one lineJunio C Hamano, May 15, 2016
  2. Johannes SchindelinMay 16, 2016
  3. Junio C HamanoMay 16, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.