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

[PATCH v2 2/9] mailmap: do not lose single-letter names

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Jul 15, 2013, 06:54 UTC
Message-ID
<1373871253-96480-3-git-send-email-sunshine@sunshineco.com>
In-Reply-To
<1373871253-96480-1-git-send-email-sunshine@sunshineco.com>
From: Junio C Hamano <gitster@pobox.com>
In parse_name_and_email() function, there is this line:
	*name = (nstart < nend ? nstart : NULL);

When the function is given a buffer "A <A@example.org> <old@x.z>", nstart scans from the beginning of the buffer, skipping whitespaces (there isn't any, so nstart points at the buffer), while nend starts from one byte before the first '<' and skips whitespaces backwards and stops at the first non-whitespace (i.e. it hits "A" at the beginning of the buffer). nstart == nend in this case for a single-letter name, and an off-by-one error makes it fail to pick up the name, which makes the entry equivalent to

	<A@example.org> <old@x.z>
without the name.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
---
 mailmap.c          | 2 +-
 t/t4203-mailmap.sh | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/mailmap.c b/mailmap.c
index 2a7b366..418081e 100644
--- a/mailmap.c
+++ b/mailmap.c
@@ -122,7 +122,7 @@ static char *parse_name_and_email(char *buffer, char **name,
 	while (nend > nstart && isspace(*nend))
 		--nend;
 
-	*name = (nstart < nend ? nstart : NULL);
+	*name = (nstart <= nend ? nstart : NULL);
 	*email = left+1;
 	*(nend+1) = '\0';
 	*right++ = '\0';
diff --git a/t/t4203-mailmap.sh b/t/t4203-mailmap.sh
index 27f8f86..8583724 100755
--- a/t/t4203-mailmap.sh
+++ b/t/t4203-mailmap.sh
@@ -247,7 +247,7 @@ test_expect_success 'cleanup after mailmap.blob tests' '
 	rm -f .mailmap
 '
 
-test_expect_failure 'single-character name' '
+test_expect_success 'single-character name' '
 	echo "     1	A <author@example.com>" >expect &&
 	echo "     1	nick1 <bugs@company.xx>" >>expect &&
 	echo "A <author@example.com>" >.mailmap &&
-- 
1.8.3.2.804.g0da7a53
Previous: Eric SunshineNext: Eric Sunshine
Message 3 of 12 in “mailmap fixes”
  1. 0/9 mailmap fixesEric Sunshine, Jul 15, 2013
  2. 1/9 t4203: demonstrate loss of single-character name in mailmap entryEric Sunshine, Jul 15, 2013
  3. 2/9 mailmap: do not lose single-letter namesEric Sunshine, Jul 15, 2013
  4. 3/9 t4203: demonstrate loss of uppercase characters in canonical emailEric Sunshine, Jul 15, 2013
  5. 4/9 mailmap: do not downcase mailmap entriesEric Sunshine, Jul 15, 2013
  6. 5/9 mailmap: debug: fix out-of-order fprintf() argumentsEric Sunshine, Jul 15, 2013
  7. Junio C HamanoJul 15, 2013
  8. 6/9 mailmap: debug: fix malformed fprintf() format directiveEric Sunshine, Jul 15, 2013
  9. 7/9 mailmap: debug: eliminate -Wformat field precision type warningEric Sunshine, Jul 15, 2013
  10. 8/9 mailmap: debug: avoid passing NULL to fprintf() '%s' directiveEric Sunshine, Jul 15, 2013
  11. 9/9 mailmap: style fixesEric Sunshine, Jul 15, 2013
  12. Junio C HamanoJul 15, 2013

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.