Hey Stephan, On Thu, Nov 17, 2016 at 5:17 AM, Stephan Beyer <s-beyer@xxxxxxx> wrote: > Hi, > > On 10/14/2016 04:14 PM, Pranit Bauva wrote: >> diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c >> index d84ba86..c542e8b 100644 >> --- a/builtin/bisect--helper.c >> +++ b/builtin/bisect--helper.c >> @@ -123,13 +123,40 @@ static int bisect_reset(const char *commit) >> return bisect_clean_state(); >> } >> >> +static int is_expected_rev(const char *expected_hex) >> +{ >> + struct strbuf actual_hex = STRBUF_INIT; >> + int res = 0; >> + if (strbuf_read_file(&actual_hex, git_path_bisect_expected_rev(), 0) >= 40) { >> + strbuf_trim(&actual_hex); >> + res = !strcmp(actual_hex.buf, expected_hex); >> + } >> + strbuf_release(&actual_hex); >> + return res; >> +} > > I am not sure it does what it should. > > I would expect the following behavior from this function: > - file does not exist (or is "broken") => return 0 > - actual_hex != expected_hex => return 0 > - otherwise return 1 > > If I am not wrong, the code does the following instead: > - file does not exist (or is "broken") => return 0 > - actual_hex != expected_hex => return 1 > - otherwise => return 0 It seems that I didn't carefully see what the shell code is (or apparently did a mistake in understanding it ;)). I think the C version does exactly what the shell version does. Can you confirm it once again, please? Regards, Pranit Bauva