diff options
author | Jeff King <peff@peff.net> | 2008-01-01 01:17:34 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-01-02 02:28:54 -0800 |
commit | 02e5ba4ae63729c28704280f1b8cfcb205c06960 (patch) | |
tree | 055b016d114ec54881ed783e1465ff6d56503916 /tree.h | |
parent | c477553b2f4f621216b25800e121af52e0750087 (diff) | |
download | git-02e5ba4ae63729c28704280f1b8cfcb205c06960.tar.gz git-02e5ba4ae63729c28704280f1b8cfcb205c06960.tar.xz |
config: handle lack of newline at end of file better
The config parsing routines use the static global
'config_file' to store the FILE* pointing to the current
config file being parsed. The function get_next_char()
automatically converts an EOF on this file to a newline for
the convenience of its callers, and it sets config_file to
NULL to indicate that EOF was reached.
This throws away useful information, though, since some
routines want to call ftell on 'config_file' to find out
exactly _where_ the routine ended. In the case of a key
ending at EOF boundary, we ended up segfaulting in some
cases (changing that key or adding another key in its
section), or failing to provide the necessary newline
(adding a new section).
This patch adds a new flag to indicate EOF and uses that
instead of setting config_file to NULL. It also makes sure
to add newlines where necessary for truncated input. All
three included tests fail without the patch.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'tree.h')
0 files changed, 0 insertions, 0 deletions