From: Junio C Hamano Date: Sat, 30 Nov 2019 20:23:20 GMT Subject: Re: [PATCH v2 0/2] Brown-bag fix on top of js/mingw-inherit-only-std-handles Message-ID: In-Reply-To: <8736e5t98b.fsf@igel.home> Andreas Schwab writes: > On Nov 30 2019, Johannes Sixt wrote: > >> Am 30.11.19 um 19:04 schrieb Junio C Hamano: >>> "Johannes Schindelin via GitGitGadget" >>> writes: >>> >>>> * We now assign errno only when the call to CreateProcessW() failed. >>> >>> Meaning the global variable 'errno' is left as it was (instead of >>> getting cleared) when a system call succeeds? That I think is the >>> correct behaviour people who use the variable expect. >> >> I hope you mean people who read the code. You cannot possibly mean >> developers who expect that the run-command API keeps errno unchanged if >> the calls were successful. I'm pretty sure they do not provide such a >> guarantee. > > POSIX guarantees that no library function sets errno to zero. It is true, but the rest of the Git code works on top of an abstraction a bit higher than C/POSIX library. The run-command API J6t cites is an example. IOW, we cannot take advantage of that POSIX guarantee in the codepaths that use our internal API. So...