Hi Peff, On Wed, 24 Oct 2018, Jeff King wrote: > On Wed, Oct 24, 2018 at 11:01:54AM +0200, Johannes Schindelin wrote: > > > > @@ -910,6 +921,7 @@ int start_command(struct child_process *cmd) > > > } > > > #endif > > > > > > +end_of_spawn: > > > > Sadly, this fails to build on Windows: > > > > run-command.c: In function 'start_command': > > run-command.c:924:1: error: label 'end_of_spawn' defined but not used [-Werror=unused-label] > > end_of_spawn: > > ^~~~~~~~~~~~ > > Doh. I didn't think of that. > > > How about squashing in this diff: > > > > -- snip -- > > diff --git a/run-command.c b/run-command.c > > index 639ea5ac3366..3f03795a5995 100644 > > --- a/run-command.c > > +++ b/run-command.c > > @@ -918,6 +918,8 @@ int start_command(struct child_process *cmd) > > close(fhout); > > if (fherr != 2) > > close(fherr); > > + > > + goto end_of_spawn; > > } > > #endif > > > > -- snap -- > > > > I can confirm that the result compiles and passes t0061. > > That leaves the Windows side of the #else with a funny, useless goto > (and without even a matching useless one on the Unix side). Let's put > it instead inside the half of the #if that actually uses it. Like so > (actually courtesy of Jonathan Nieder): > > diff --git a/run-command.c b/run-command.c > index 639ea5ac33..d679cc267c 100644 > --- a/run-command.c > +++ b/run-command.c > @@ -868,6 +868,8 @@ int start_command(struct child_process *cmd) > argv_array_clear(&argv); > free(childenv); > } > +end_of_spawn: > + > #else > { > int fhin = 0, fhout = 1, fherr = 2; > @@ -921,7 +923,6 @@ int start_command(struct child_process *cmd) > } > #endif > > -end_of_spawn: > if (cmd->pid < 0) { > if (need_in) > close_pair(fdin); That works for me, too. > Thanks for your review! You're welcome! Thanks, Dscho > > -Peff >