# [PATCH 0/1] jt/fetch-cdn-offload: fix build with clang

5 messages from 2019-02-24 to 2019-03-11. Participants: Johannes Schindelin via GitGitGadget, Junio C Hamano, Johannes Schindelin.
Thread: https://gitlist.dev/t/50580

## Johannes Schindelin via GitGitGadget, 2019-02-24 22:12

Subject: [PATCH 0/1] jt/fetch-cdn-offload: fix build with clang
Message-ID: <pull.139.git.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/pull.139.git.gitgitgadget%40gmail.com

```
I think this is actually legitimate a build error (see e.g. 
https://dev.azure.com/gitgitgadget/git/_build/results?buildId=2394), and I
am quite surprised that GCC accepts this.

Note: after thinking about this for a while, I guess an empty string would
work, too (i.e. "" instead of " 0"), but I already waited for the macOS
build to finish at https://github.com/gitgitgadget/git/pull/139, and it's a
fixup! for Jonathan to pick up, anyway...

Junio, could I ask you to apply this on top of your SQUASH??? to fix the
build?

Johannes Schindelin (1):
  fixup! upload-pack: refactor reading of pack-objects out

 upload-pack.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)


base-commit: 2c31d711669adc7a7bfad06df37b976af99dfaa6
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-139%2Fdscho%2Fjt%2Ffetch-cdn-offload-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-139/dscho/jt/fetch-cdn-offload-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/139
-- 
gitgitgadget

```

## Johannes Schindelin via GitGitGadget, 2019-02-24 22:12

Subject: [PATCH 1/1] fixup! upload-pack: refactor reading of pack-objects out
Message-ID: <5fa4fcad63e18dd9d840217eb8cf3dab8f69bc1b.1551046329.git.gitgitgadget@gmail.com>
URL: https://gitlist.dev/e/5fa4fcad63e18dd9d840217eb8cf3dab8f69bc1b.1551046329.git.gitgitgadget%40gmail.com
In-Reply-To: <pull.139.git.gitgitgadget@gmail.com>

```
From: Johannes Schindelin <johannes.schindelin@gmx.de>

This fixes an issue pointed out by clang.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
 upload-pack.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/upload-pack.c b/upload-pack.c
index 2365b707bc..534e8951a2 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -179,7 +179,7 @@ static void create_pack_file(const struct object_array *have_obj,
 			     const struct string_list *uri_protocols)
 {
 	struct child_process pack_objects = CHILD_PROCESS_INIT;
-	struct output_state output_state = {0};
+	struct output_state output_state = {"\0"};
 	char progress[128];
 	char abort_msg[] = "aborting due to possible repository "
 		"corruption on the remote side.";
-- 
gitgitgadget

```

## Junio C Hamano, 2019-03-03 01:21

Subject: Re: [PATCH 1/1] fixup! upload-pack: refactor reading of pack-objects out
Message-ID: <xmqq1s3o69cl.fsf@gitster-ct.c.googlers.com>
URL: https://gitlist.dev/e/xmqq1s3o69cl.fsf%40gitster-ct.c.googlers.com
In-Reply-To: <5fa4fcad63e18dd9d840217eb8cf3dab8f69bc1b.1551046329.git.gitgitgadget@gmail.com>

```
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:

> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> This fixes an issue pointed out by clang.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  upload-pack.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/upload-pack.c b/upload-pack.c
> index 2365b707bc..534e8951a2 100644
> --- a/upload-pack.c
> +++ b/upload-pack.c
> @@ -179,7 +179,7 @@ static void create_pack_file(const struct object_array *have_obj,
>  			     const struct string_list *uri_protocols)
>  {
>  	struct child_process pack_objects = CHILD_PROCESS_INIT;
> -	struct output_state output_state = {0};
> +	struct output_state output_state = {"\0"};

OK, as the structure looks like

	struct output_state {
		char buffer[8193];
		int used;
		...

we obviously cannot initialize buffer[] with a single integer 0 ;-)
Between "" and "\0" you wondered elsewhere, I have no strong
preference, but if I were fixing it, I would probably write it as

	struct output_state output_state = { { 0 } };

so that readers do not even have to waste time to wonder between the
two.

Thanks.


```

## Johannes Schindelin, 2019-03-03 15:01

Subject: Re: [PATCH 1/1] fixup! upload-pack: refactor reading of pack-objects out
Message-ID: <nycvar.QRO.7.76.6.1903031601130.45@tvgsbejvaqbjf.bet>
URL: https://gitlist.dev/e/nycvar.QRO.7.76.6.1903031601130.45%40tvgsbejvaqbjf.bet
In-Reply-To: <xmqq1s3o69cl.fsf@gitster-ct.c.googlers.com>

```
Hi,

On Sun, 3 Mar 2019, Junio C Hamano wrote:

> "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
> writes:
> 
> > From: Johannes Schindelin <johannes.schindelin@gmx.de>
> >
> > This fixes an issue pointed out by clang.
> >
> > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> > ---
> >  upload-pack.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/upload-pack.c b/upload-pack.c
> > index 2365b707bc..534e8951a2 100644
> > --- a/upload-pack.c
> > +++ b/upload-pack.c
> > @@ -179,7 +179,7 @@ static void create_pack_file(const struct object_array *have_obj,
> >  			     const struct string_list *uri_protocols)
> >  {
> >  	struct child_process pack_objects = CHILD_PROCESS_INIT;
> > -	struct output_state output_state = {0};
> > +	struct output_state output_state = {"\0"};
> 
> OK, as the structure looks like
> 
> 	struct output_state {
> 		char buffer[8193];
> 		int used;
> 		...
> 
> we obviously cannot initialize buffer[] with a single integer 0 ;-)
> Between "" and "\0" you wondered elsewhere, I have no strong
> preference, but if I were fixing it, I would probably write it as
> 
> 	struct output_state output_state = { { 0 } };
> 
> so that readers do not even have to waste time to wonder between the
> two.

Right. I don't care, as long as Jonathan addresses the compile error on
clang.

Ciao,
Dscho

```

## Johannes Schindelin, 2019-03-11 12:54

Subject: Re: [PATCH 1/1] fixup! upload-pack: refactor reading of pack-objects out
Message-ID: <nycvar.QRO.7.76.6.1903111353150.41@tvgsbejvaqbjf.bet>
URL: https://gitlist.dev/e/nycvar.QRO.7.76.6.1903111353150.41%40tvgsbejvaqbjf.bet
In-Reply-To: <nycvar.QRO.7.76.6.1903031601130.45@tvgsbejvaqbjf.bet>

```
Hi Jonathan,

On Sun, 3 Mar 2019, Johannes Schindelin wrote:

> On Sun, 3 Mar 2019, Junio C Hamano wrote:
> 
> > "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
> > writes:
> > 
> > > From: Johannes Schindelin <johannes.schindelin@gmx.de>
> > >
> > > This fixes an issue pointed out by clang.
> > >
> > > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> > > ---
> > >  upload-pack.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/upload-pack.c b/upload-pack.c
> > > index 2365b707bc..534e8951a2 100644
> > > --- a/upload-pack.c
> > > +++ b/upload-pack.c
> > > @@ -179,7 +179,7 @@ static void create_pack_file(const struct object_array *have_obj,
> > >  			     const struct string_list *uri_protocols)
> > >  {
> > >  	struct child_process pack_objects = CHILD_PROCESS_INIT;
> > > -	struct output_state output_state = {0};
> > > +	struct output_state output_state = {"\0"};
> > 
> > OK, as the structure looks like
> > 
> > 	struct output_state {
> > 		char buffer[8193];
> > 		int used;
> > 		...
> > 
> > we obviously cannot initialize buffer[] with a single integer 0 ;-)
> > Between "" and "\0" you wondered elsewhere, I have no strong
> > preference, but if I were fixing it, I would probably write it as
> > 
> > 	struct output_state output_state = { { 0 } };
> > 
> > so that readers do not even have to waste time to wonder between the
> > two.
> 
> Right. I don't care, as long as Jonathan addresses the compile error on
> clang.

This is *still* broken:
https://dev.azure.com/gitgitgadget/git/_build/results?buildId=4337

Junio, can you please in the least add my fixup! on top of
jt/fetch-cdn-offload?

Thanks,
Dscho

```
