grep: cast printf %.*s "precision" argument explicitly to int
authorJunio C Hamano <gitster@pobox.com>
Mon, 9 Mar 2009 01:22:44 +0000 (18:22 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Mar 2009 01:22:44 +0000 (18:22 -0700)
On some systems, regoff_t that is the type of rm_so/rm_eo members are
wider than int; %.*s precision specifier expects an int, so use an explicit
cast.

A breakage reported on Darwin by Brian Gernhardt should be fixed with
this patch.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
grep.c

diff --git a/grep.c b/grep.c
index cace1c8bcb4402f9738ae124b908324b68ff91b3..be99b3416867ff68a1c2c1a3646be35baf61f8b2 100644 (file)
--- a/grep.c
+++ b/grep.c
@@ -490,9 +490,9 @@ static void show_line(struct grep_opt *opt, char *bol, char *eol,
                *eol = '\0';
                while (next_match(opt, bol, eol, ctx, &match, eflags)) {
                        printf("%.*s%s%.*s%s",
-                              match.rm_so, bol,
+                              (int)match.rm_so, bol,
                               opt->color_match,
-                              match.rm_eo - match.rm_so, bol + match.rm_so,
+                              (int)(match.rm_eo - match.rm_so), bol + match.rm_so,
                               GIT_COLOR_RESET);
                        bol += match.rm_eo;
                        rest -= match.rm_eo;