• J
    config: do not ungetc EOF · 5e0be134
    Jeff King 提交于
    When we are parsing a config value, if we see a carriage
    return, we fgetc the next character to see if it is a
    line feed (in which case we silently drop the CR). If it
    isn't, we then ungetc the character, and take the literal
    CR.
    
    But we never check whether we in fact got a character at
    all. If the config file ends in CR, we will get EOF here,
    and try to ungetc EOF. This works OK for a real stdio
    stream. The ungetc returns an error, and the next fgetc will
    then return EOF again.
    
    However, our custom buffer-based stream is not so fortunate.
    It happily rewinds the position of the stream by one
    character, ignoring the fact that we fed it EOF. The next
    fgetc call returns the final CR again, over and over, and we
    end up in an infinite loop.
    Signed-off-by: NJeff King <peff@peff.net>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    5e0be134
config.c 43.7 KB