range-diff: use a hunk callback

When we count the lines in a diff, we don't actually care about the contents of each line. By using a hunk callback, we tell xdiff that it does not need to even bother generating a hunk header line, saving a small amount of work. Arguably we could even ignore the hunk headers completely, since we're just computing a cost function between patches. But doing it this way maintains the exact same behavior before and after. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Nov 2, 2018 at 02:39 UTC d2eb80935a4e93cd775b5e8dc3f07fa1cd21d330
1 file changed +9 -1
range-diff.c
+9 -1
@@ -177,6 +177,12 @@ static void diffsize_consume(void *data, char *line, unsigned long len)
177 (*(int *)data)++;
178 }
179
180 +static void diffsize_hunk(void *data, long ob, long on, long nb, long nn,
181 + const char *funcline, long funclen)
182 +{
183 + diffsize_consume(data, NULL, 0);
184 +}
185 +
186 static int diffsize(const char *a, const char *b)
187 {
188 xpparam_t pp = { 0 };
@@ -190,7 +196,9 @@ static int diffsize(const char *a, const char *b)
196 mf2.size = strlen(b);
197
198 cfg.ctxlen = 3;
193 - if (!xdi_diff_outf(&mf1, &mf2, NULL, diffsize_consume, &count, &pp, &cfg))
199 + if (!xdi_diff_outf(&mf1, &mf2,
200 + diffsize_hunk, diffsize_consume, &count,
201 + &pp, &cfg))
202 return count;
203
204 error(_("failed to generate diff"));