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

git-grep Bus Error

From
Brian Gernhardt <brian@gernhardtsoftware.com>
Date
Mar 8, 2009, 23:27 UTC
Message-ID
<C36B091A-ABE9-4C74-9E59-4EBD50E3B9F5@gernhardtsoftware.com>

The --color display code in git-grep is giving me a bus error in show_line at line 492:

Show 6 quoted lines
>                         printf("%.*s%s%.*s%s",
>                                match.rm_so, bol,
>                                opt->color_match,
>                                match.rm_eo - match.rm_so, bol +  
> match.rm_so,
>                                GIT_COLOR_RESET);

The first problem is that %.*s does not appear to do on OS X what the author thinks it does. A precision of 0 for %s is listed in "man printf" as printing the entire string.

To fix that, I changed it to the following:
Show 7 quoted lines
> 			if( match.rm_so > 0 )
> 				printf( "%.*s", match.rm_so, bol );
> 			if( match.rm_eo > match.rm_so )
> 				printf("%s%.*s%s",
> 					   opt->color_match,
> 					   match.rm_eo - match.rm_so, bol + match.rm_so,
> 					   GIT_COLOR_RESET);

This code does not fail, but instead gives lines like the following (showing the raw color codes):

.gitignore:\033[31m\033[1m(nugit
GIT_COLOR_RESET is apparently being ignored, and I don't know why.

Adding a line to check the values of rm_so, rm_eo, and the difference between the two gives:

> 			printf( "%d %d %d",
> 				  match.rm_so, match.rm_eo,
> 				  match.rm_eo - match.rm_so );

.gitignore:0 0 3\033[31m\033[1m(nugit .mailmap:23 0 26(null)\033[31m\033[1m(nugit-shortlog to fix a few botched name translations-shortlog to fix a few botched name translations

And now I'm baffled. Apparently my computer thinks 0 - 0 == 3 and 0 - 23 == 26.

Can I get some help?
~~ Brian
Next: Sam Hocevar
Message 1 of 9 in “git-grep Bus Error”
  1. Brian GernhardtMar 8, 2009
  2. Sam HocevarMar 8, 2009
  3. Brian GernhardtMar 9, 2009
  4. Junio C HamanoMar 9, 2009
  5. Junio C HamanoMar 9, 2009
  6. Brian GernhardtMar 9, 2009
  7. grep: cast printf %.*s "precision" argument explicitly to intJunio C Hamano, Mar 9, 2009
  8. Brian GernhardtMar 9, 2009
  9. Junio C HamanoMar 9, 2009

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.