Johannes Schindelin <johannes.schinde...@gmx.de> writes: > When get_value() parses a key/value pair, it is possible that the line > number is decreased (because the \n has been consumed already) before the > key/value pair is passed to the callback function, to allow for the > correct line to be attributed in case of an error. > > However, when git_parse_source() asks get_value() to parse the key/value > pair, the error reporting is performed *after* get_value() returns. > > Which means that we have to be careful not to increase the line number > in get_value() after the callback function returned an error.
Sounds sane. Is this something we can protect easily with a new test or two? > > Signed-off-by: Johannes Schindelin <johannes.schinde...@gmx.de> > --- > config.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/config.c b/config.c > index 146cb3452ad..9b88531a70d 100644 > --- a/config.c > +++ b/config.c > @@ -604,7 +604,8 @@ static int get_value(config_fn_t fn, void *data, struct > strbuf *name) > */ > cf->linenr--; > ret = fn(name->buf, value, data); > - cf->linenr++; > + if (!ret) > + cf->linenr++; > return ret; > }