提交 b3b3f60b 编写于 作者: M Matthieu Moy 提交者: Junio C Hamano

config.c: fix accuracy of line number in errors

If a callback returns a negative value to `git_config*()` family,
they call `die()` while printing the line number and the file name.
Currently the printed line number is off by one, thus printing the
wrong line number.

Make `linenr` point to the line we just parsed during the call
to callback to get accurate line number in error messages.
Commit-message-by: NTanay Abhra <tanayabh@gmail.com>
Signed-off-by: NTanay Abhra <tanayabh@gmail.com>
Signed-off-by: NMatthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 8262aaa2
......@@ -244,6 +244,7 @@ static int get_next_char(void)
cf->linenr++;
if (c == EOF) {
cf->eof = 1;
cf->linenr++;
c = '\n';
}
return c;
......@@ -319,6 +320,7 @@ static int get_value(config_fn_t fn, void *data, struct strbuf *name)
{
int c;
char *value;
int ret;
/* Get the full name */
for (;;) {
......@@ -341,7 +343,15 @@ static int get_value(config_fn_t fn, void *data, struct strbuf *name)
if (!value)
return -1;
}
return fn(name->buf, value, data);
/*
* We already consumed the \n, but we need linenr to point to
* the line we just parsed during the call to fn to get
* accurate line number in error messages.
*/
cf->linenr--;
ret = fn(name->buf, value, data);
cf->linenr++;
return ret;
}
static int get_extended_base_var(struct strbuf *name, int c)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册