git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* git-grep Bus Error
@ 2009-03-08 23:27 Brian Gernhardt
  2009-03-08 23:41 ` Sam Hocevar
  2009-03-09  0:29 ` Junio C Hamano
  0 siblings, 2 replies; 9+ messages in thread
From: Brian Gernhardt @ 2009-03-08 23:27 UTC (permalink / raw)
  To: Git List

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.  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:

> 			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

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2009-03-09  1:49 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-08 23:27 git-grep Bus Error Brian Gernhardt
2009-03-08 23:41 ` Sam Hocevar
2009-03-09  0:58   ` Brian Gernhardt
2009-03-09  1:11   ` Junio C Hamano
2009-03-09  1:18     ` Junio C Hamano
2009-03-09  1:19     ` Brian Gernhardt
2009-03-09  1:24     ` [PATCH] grep: cast printf %.*s "precision" argument explicitly to int Junio C Hamano
2009-03-09  1:48     ` git-grep Bus Error Brian Gernhardt
2009-03-09  0:29 ` Junio C Hamano

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).