Johannes Sixt wrote: > Am 30.12.19 um 19:06 schrieb Jonathan Nieder: >> when >> errno is meaningful for a function for a given return value, the usual >> convention is >> >> (1) it *always* sets errno for errors, not conditionally > > You seem to understand that errno isn't set somewhere where it should be > set. On the contrary: this caller is using errno as an error *indicator* instead of a way of *distinguishing* between errors (or to put it another way, this caller is treating `errno == 0` as a meaningful condition). This means the calling code is buggy. [...] >> Do you have more details about the case where read_object is expected >> to produce errno == 0? I'm wondering whether we forgot to set 'errno >> = ENOENT' explicitly somewhere. > > I don't think that forgetting to set ENOENT is the problem. > > It happens reproducibly in test 5 of t0410-partial-clone: Thanks, will try it out.