• J
    diff-no-index: correctly diagnose error return from diff_opt_parse() · ad1c3fbd
    Junio C Hamano 提交于
    diff_opt_parse() returns the number of options parsed, or often
    returns error() which is defined to return -1.  Yes, return value of
    0 is "I did not process that option at all", which should cause the
    caller to say that, but negative return should not be forgotten.
    
    This bug caused "diff --no-index" to infinitely show the same error
    message because the returned value was used to decrement the loop
    control variable, e.g.
    
            $ git diff --no-index --color=words a b
            error: option `color' expects "always", "auto", or "never"
            error: option `color' expects "always", "auto", or "never"
            ...
    
    Instead, make it act like so:
    
            $ git diff --no-index --color=words a b
            error: option `color' expects "always", "auto", or "never"
            fatal: invalid diff option/value: --color=words
    Reported-by: NLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    ad1c3fbd
diff-no-index.c 6.8 KB