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

Re: git-grep Bus Error

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 9, 2009, 00:29 UTC
Message-ID
<7v1vt7k07o.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<C36B091A-ABE9-4C74-9E59-4EBD50E3B9F5@gernhardtsoftware.com>
Brian Gernhardt <brian@gernhardtsoftware.com> writes:
Show 12 quoted lines
> The --color display code in git-grep is giving me a bus error in
> show_line at line 492:
>
>>                         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.

Hmm, that means that printf on OSX does not dohat the POSIX thinks it ought to.

    http://www.opengroup.org/onlinepubs/009695399/functions/fprintf.html

says that "a negative precision is taken as if the precision were omitted"; it does not say "a negative or zero" here.

Which is a bit sad, because we would need to apply a workaround like yours. We shouldn't have to.

Show 9 quoted lines
> To fix that, I changed it to the following:
>
>> 			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

Hmm, that is strange. Your above change issues color_match and COLOR_RESET only when you have something between rm_eo and rm_so. I do not see anything between "ESC [ 31 m" and "ESC [ m" above, and you have an extra "1" between "ESC [" and terminating "m" in the reset sequence.

Previous: Brian Gernhardt
Message 9 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.