• J
    config: handle lack of newline at end of file better · 02e5ba4a
    Jeff King 提交于
    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: NJunio C Hamano <gitster@pobox.com>
    02e5ba4a
config.c 23.4 KB