* [PATCH 0/2] Patches to let Git build with GCC 6 and DEVELOPER=SureWhyNot @ 2016-08-04 16:07 Johannes Schindelin 2016-08-04 16:07 ` [PATCH 1/2] nedmalloc: fix misleading indentation Johannes Schindelin 2016-08-04 16:07 ` [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning Johannes Schindelin 0 siblings, 2 replies; 17+ messages in thread From: Johannes Schindelin @ 2016-08-04 16:07 UTC (permalink / raw) To: git; +Cc: Junio C Hamano While working on some local setup to allow my poor little laptop to build and test the Windows-specific patches of Git for Windows on top of the upstream branches, my development environment updated to use GCC 6, and these patches were required. Johannes Schindelin (2): nedmalloc: fix misleading indentation nedmalloc: work around overzealous GCC 6 warning compat/nedmalloc/nedmalloc.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) Published-As: https://github.com/dscho/git/releases/tag/gcc-6-v1 Fetch-It-Via: git fetch https://github.com/dscho/git gcc-6-v1 -- 2.9.0.281.g286a8d9 base-commit: 80460f513ebd7851953f5402dd9744236128b240 ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/2] nedmalloc: fix misleading indentation 2016-08-04 16:07 [PATCH 0/2] Patches to let Git build with GCC 6 and DEVELOPER=SureWhyNot Johannes Schindelin @ 2016-08-04 16:07 ` Johannes Schindelin 2016-08-04 16:07 ` [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning Johannes Schindelin 1 sibling, 0 replies; 17+ messages in thread From: Johannes Schindelin @ 2016-08-04 16:07 UTC (permalink / raw) To: git; +Cc: Junio C Hamano Some code in nedmalloc is indented in a funny way that could be misinterpreted as if a line after a for loop was included in the loop body, when it is not. GCC 6 complains about this in DEVELOPER=YepSure mode. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- compat/nedmalloc/nedmalloc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c index a0a16eb..677d1b2 100644 --- a/compat/nedmalloc/nedmalloc.c +++ b/compat/nedmalloc/nedmalloc.c @@ -938,10 +938,10 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** void **ret; threadcache *tc; int mymspace; - size_t i, *adjustedsizes=(size_t *) alloca(elems*sizeof(size_t)); - if(!adjustedsizes) return 0; - for(i=0; i<elems; i++) - adjustedsizes[i]=sizes[i]<sizeof(threadcacheblk) ? sizeof(threadcacheblk) : sizes[i]; + size_t i, *adjustedsizes=(size_t *) alloca(elems*sizeof(size_t)); + if(!adjustedsizes) return 0; + for(i=0; i<elems; i++) + adjustedsizes[i]=sizes[i]<sizeof(threadcacheblk) ? sizeof(threadcacheblk) : sizes[i]; GetThreadCache(&p, &tc, &mymspace, 0); GETMSPACE(m, p, tc, mymspace, 0, ret=mspace_independent_comalloc(m, elems, adjustedsizes, chunks)); -- 2.9.0.281.g286a8d9 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-04 16:07 [PATCH 0/2] Patches to let Git build with GCC 6 and DEVELOPER=SureWhyNot Johannes Schindelin 2016-08-04 16:07 ` [PATCH 1/2] nedmalloc: fix misleading indentation Johannes Schindelin @ 2016-08-04 16:07 ` Johannes Schindelin 2016-08-04 17:41 ` Junio C Hamano 2016-08-04 21:56 ` René Scharfe 1 sibling, 2 replies; 17+ messages in thread From: Johannes Schindelin @ 2016-08-04 16:07 UTC (permalink / raw) To: git; +Cc: Junio C Hamano With GCC 6, the strdup() function is declared with the "nonnull" attribute, stating that it is not allowed to pass a NULL value as parameter. In nedmalloc()'s reimplementation of strdup(), Postel's Law is heeded and NULL parameters are handled gracefully. GCC 6 complains about that now because it thinks that NULL cannot be passed to strdup() anyway. Let's just shut up GCC >= 6 in that case and go on with our lives. See https://gcc.gnu.org/gcc-6/porting_to.html for details. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> --- compat/nedmalloc/nedmalloc.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c index 677d1b2..3f28c0b 100644 --- a/compat/nedmalloc/nedmalloc.c +++ b/compat/nedmalloc/nedmalloc.c @@ -956,6 +956,9 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** char *strdup(const char *s1) { char *s2 = 0; +#if __GNUC__ >= 6 +#pragma GCC diagnostic ignored "-Wnonnull-compare" +#endif if (s1) { size_t len = strlen(s1) + 1; s2 = malloc(len); -- 2.9.0.281.g286a8d9 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-04 16:07 ` [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning Johannes Schindelin @ 2016-08-04 17:41 ` Junio C Hamano 2016-08-05 15:38 ` Johannes Schindelin 2016-08-04 21:56 ` René Scharfe 1 sibling, 1 reply; 17+ messages in thread From: Junio C Hamano @ 2016-08-04 17:41 UTC (permalink / raw) To: Johannes Schindelin; +Cc: git Johannes Schindelin <johannes.schindelin@gmx.de> writes: > With GCC 6, the strdup() function is declared with the "nonnull" > attribute, stating that it is not allowed to pass a NULL value as > parameter. > > In nedmalloc()'s reimplementation of strdup(), Postel's Law is heeded > and NULL parameters are handled gracefully. GCC 6 complains about that > now because it thinks that NULL cannot be passed to strdup() anyway. > > Let's just shut up GCC >= 6 in that case and go on with our lives. > > See https://gcc.gnu.org/gcc-6/porting_to.html for details. > > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> > --- > compat/nedmalloc/nedmalloc.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c > index 677d1b2..3f28c0b 100644 > --- a/compat/nedmalloc/nedmalloc.c > +++ b/compat/nedmalloc/nedmalloc.c > @@ -956,6 +956,9 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** > char *strdup(const char *s1) > { > char *s2 = 0; > +#if __GNUC__ >= 6 > +#pragma GCC diagnostic ignored "-Wnonnull-compare" > +#endif > if (s1) { > size_t len = strlen(s1) + 1; > s2 = malloc(len); Is it a common convention to place "#pragma GCC diagnostic" immediately before the statement you want to affect, and have the same pragma in effect until the end of the compilation unit? I know this function is at the end and it is not worth doing push/ignored/pop dance, and I assumed that it is the reason why we see a single "ignore from here on", which is much simpler, but it is somewhat distracting. It made me wonder if it makes it easier to read and less distracting to have these three lines in front of and outside the function definition, while thinking that it would have a documentation value to have it immediately before the statement you want to affect. Help me convince myself that this is the best place. Thanks. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-04 17:41 ` Junio C Hamano @ 2016-08-05 15:38 ` Johannes Schindelin 0 siblings, 0 replies; 17+ messages in thread From: Johannes Schindelin @ 2016-08-05 15:38 UTC (permalink / raw) To: Junio C Hamano; +Cc: git [-- Attachment #1: Type: text/plain, Size: 1916 bytes --] Hi Junio, On Thu, 4 Aug 2016, Junio C Hamano wrote: > Johannes Schindelin <johannes.schindelin@gmx.de> writes: > > > With GCC 6, the strdup() function is declared with the "nonnull" > > attribute, stating that it is not allowed to pass a NULL value as > > parameter. > > > > In nedmalloc()'s reimplementation of strdup(), Postel's Law is heeded > > and NULL parameters are handled gracefully. GCC 6 complains about that > > now because it thinks that NULL cannot be passed to strdup() anyway. > > > > Let's just shut up GCC >= 6 in that case and go on with our lives. > > > > See https://gcc.gnu.org/gcc-6/porting_to.html for details. > > > > Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> > > --- > > compat/nedmalloc/nedmalloc.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c > > index 677d1b2..3f28c0b 100644 > > --- a/compat/nedmalloc/nedmalloc.c > > +++ b/compat/nedmalloc/nedmalloc.c > > @@ -956,6 +956,9 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** > > char *strdup(const char *s1) > > { > > char *s2 = 0; > > +#if __GNUC__ >= 6 > > +#pragma GCC diagnostic ignored "-Wnonnull-compare" > > +#endif > > if (s1) { > > size_t len = strlen(s1) + 1; > > s2 = malloc(len); > > Is it a common convention to place "#pragma GCC diagnostic" > immediately before the statement you want to affect, and have the > same pragma in effect until the end of the compilation unit? Uh oh. This was a brain fart. I somehow confused the way pragmas work with the way __attribute__s work. You are correct, of course, that the pragma affects the entire remainder of the file, not just this statement. Luckily, René came up with a much more elegant solution, so that Git's history does not have to shame me eternally. Ciao, Dscho ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-04 16:07 ` [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning Johannes Schindelin 2016-08-04 17:41 ` Junio C Hamano @ 2016-08-04 21:56 ` René Scharfe 2016-08-04 22:33 ` Junio C Hamano 2016-08-04 22:39 ` Junio C Hamano 1 sibling, 2 replies; 17+ messages in thread From: René Scharfe @ 2016-08-04 21:56 UTC (permalink / raw) To: Johannes Schindelin, git; +Cc: Junio C Hamano Am 04.08.2016 um 18:07 schrieb Johannes Schindelin: > With GCC 6, the strdup() function is declared with the "nonnull" > attribute, stating that it is not allowed to pass a NULL value as > parameter. > > In nedmalloc()'s reimplementation of strdup(), Postel's Law is heeded > and NULL parameters are handled gracefully. GCC 6 complains about that > now because it thinks that NULL cannot be passed to strdup() anyway. > > Let's just shut up GCC >= 6 in that case and go on with our lives. This version of strdup() is only compiled if nedmalloc is used instead of the system allocator. That means we can't rely on strdup() being able to take NULL -- some (most?) platforms won't like it. Removing the NULL check would be a more general and overall easier way out, no? But it should check the result of malloc() before copying. --- compat/nedmalloc/nedmalloc.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c index a0a16eb..cc18f0c 100644 --- a/compat/nedmalloc/nedmalloc.c +++ b/compat/nedmalloc/nedmalloc.c @@ -955,12 +955,10 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** */ char *strdup(const char *s1) { - char *s2 = 0; - if (s1) { - size_t len = strlen(s1) + 1; - s2 = malloc(len); + size_t len = strlen(s1) + 1; + char *s2 = malloc(len); + if (s2) memcpy(s2, s1, len); - } return s2; } #endif -- 2.9.2 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-04 21:56 ` René Scharfe @ 2016-08-04 22:33 ` Junio C Hamano 2016-08-04 22:39 ` Junio C Hamano 1 sibling, 0 replies; 17+ messages in thread From: Junio C Hamano @ 2016-08-04 22:33 UTC (permalink / raw) To: René Scharfe; +Cc: Johannes Schindelin, git René Scharfe <l.s.r@web.de> writes: > This version of strdup() is only compiled if nedmalloc is used instead > of the system allocator. That means we can't rely on strdup() being > able to take NULL -- some (most?) platforms won't like it. Removing > the NULL check would be a more general and overall easier way out, no? The callers of this version must be prepared to call a version of strdup() that does not accept NULL, so in a sense, passing NULL to this function is already an error in the context of this project. That sounds like a good rationale to take this more straight-forward approach. > But it should check the result of malloc() before copying. > --- > compat/nedmalloc/nedmalloc.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c > index a0a16eb..cc18f0c 100644 > --- a/compat/nedmalloc/nedmalloc.c > +++ b/compat/nedmalloc/nedmalloc.c > @@ -955,12 +955,10 @@ void **nedpindependent_comalloc(nedpool *p, > size_t elems, size_t *sizes, void ** > */ > char *strdup(const char *s1) > { > - char *s2 = 0; > - if (s1) { > - size_t len = strlen(s1) + 1; > - s2 = malloc(len); > + size_t len = strlen(s1) + 1; > + char *s2 = malloc(len); > + if (s2) > memcpy(s2, s1, len); > - } > return s2; > } > #endif ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-04 21:56 ` René Scharfe 2016-08-04 22:33 ` Junio C Hamano @ 2016-08-04 22:39 ` Junio C Hamano 2016-08-05 5:36 ` Johannes Sixt 2016-08-05 15:34 ` Johannes Schindelin 1 sibling, 2 replies; 17+ messages in thread From: Junio C Hamano @ 2016-08-04 22:39 UTC (permalink / raw) To: Johannes Schindelin; +Cc: René Scharfe, git Let's try it this way. How about this as a replacement? -- >8 -- From: Johannes Schindelin <johannes.schindelin@gmx.de> Date: Thu, 4 Aug 2016 18:07:08 +0200 Subject: [PATCH] nedmalloc: work around overzealous GCC 6 warning With GCC 6, the strdup() function is declared with the "nonnull" attribute, stating that it is not allowed to pass a NULL value as parameter. In nedmalloc()'s reimplementation of strdup(), Postel's Law is heeded and NULL parameters are handled gracefully. GCC 6 complains about that now because it thinks that NULL cannot be passed to strdup() anyway. Because the callers in this project of strdup() must be prepared to call any implementation of strdup() supplied by the platform, so it is pointless to pretend that it is OK to call it with NULL. Remove the conditional based on NULL-ness of the input; this squelches the warning. See https://gcc.gnu.org/gcc-6/porting_to.html for details. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Helped-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> --- compat/nedmalloc/nedmalloc.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c index 677d1b2..88cd78c 100644 --- a/compat/nedmalloc/nedmalloc.c +++ b/compat/nedmalloc/nedmalloc.c @@ -955,12 +955,10 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** */ char *strdup(const char *s1) { - char *s2 = 0; - if (s1) { - size_t len = strlen(s1) + 1; - s2 = malloc(len); + size_t len = strlen(s1) + 1; + s2 = malloc(len); + if (s1) memcpy(s2, s1, len); - } return s2; } #endif -- 2.9.2-766-gd7972a8 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-04 22:39 ` Junio C Hamano @ 2016-08-05 5:36 ` Johannes Sixt 2016-08-05 5:40 ` Johannes Sixt 2016-08-05 15:34 ` Johannes Schindelin 1 sibling, 1 reply; 17+ messages in thread From: Johannes Sixt @ 2016-08-05 5:36 UTC (permalink / raw) To: Junio C Hamano, Johannes Schindelin; +Cc: René Scharfe, git Am 05.08.2016 um 00:39 schrieb Junio C Hamano: > @@ -955,12 +955,10 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** > */ > char *strdup(const char *s1) > { > - char *s2 = 0; > - if (s1) { > - size_t len = strlen(s1) + 1; > - s2 = malloc(len); > + size_t len = strlen(s1) + 1; > + s2 = malloc(len); > + if (s1) It does not make sense to check s1 for NULL when it was passed to strlen() earlier; strlen() does not accept NULL, either... > memcpy(s2, s1, len); > - } > return s2; > } > #endif -- Hannes ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-05 5:36 ` Johannes Sixt @ 2016-08-05 5:40 ` Johannes Sixt 2016-08-05 6:24 ` Junio C Hamano 0 siblings, 1 reply; 17+ messages in thread From: Johannes Sixt @ 2016-08-05 5:40 UTC (permalink / raw) To: Junio C Hamano, Johannes Schindelin; +Cc: René Scharfe, git Am 05.08.2016 um 07:36 schrieb Johannes Sixt: > Am 05.08.2016 um 00:39 schrieb Junio C Hamano: >> @@ -955,12 +955,10 @@ void **nedpindependent_comalloc(nedpool *p, >> size_t elems, size_t *sizes, void ** >> */ >> char *strdup(const char *s1) >> { >> - char *s2 = 0; >> - if (s1) { >> - size_t len = strlen(s1) + 1; >> - s2 = malloc(len); >> + size_t len = strlen(s1) + 1; >> + s2 = malloc(len); >> + if (s1) > > It does not make sense to check s1 for NULL when it was passed to > strlen() earlier; strlen() does not accept NULL, either... Oh! This is a typo. You meant to check s2 for NULL. And the declaration for s2 should remain, of course. > >> memcpy(s2, s1, len); >> - } >> return s2; >> } >> #endif -- Hannes ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-05 5:40 ` Johannes Sixt @ 2016-08-05 6:24 ` Junio C Hamano 2016-08-05 7:42 ` Jeff King 0 siblings, 1 reply; 17+ messages in thread From: Junio C Hamano @ 2016-08-05 6:24 UTC (permalink / raw) To: Johannes Sixt; +Cc: Johannes Schindelin, René Scharfe, git Johannes Sixt <j6t@kdbg.org> writes: > Oh! This is a typo. You meant to check s2 for NULL. > > And the declaration for s2 should remain, of course. Yeah, the moral of the story is don't try to do something you do not usually do X-<. The second try (the log message is the same). I do not know if we want to worry about st_add(1, strlen(s1)) overflow around here, though. compat/nedmalloc/nedmalloc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c index 677d1b2..2d4ef59 100644 --- a/compat/nedmalloc/nedmalloc.c +++ b/compat/nedmalloc/nedmalloc.c @@ -955,12 +955,11 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** */ char *strdup(const char *s1) { - char *s2 = 0; - if (s1) { - size_t len = strlen(s1) + 1; - s2 = malloc(len); + size_t len = strlen(s1) + 1; + char *s2 = malloc(len); + + if (s2) memcpy(s2, s1, len); - } return s2; } #endif ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-05 6:24 ` Junio C Hamano @ 2016-08-05 7:42 ` Jeff King 0 siblings, 0 replies; 17+ messages in thread From: Jeff King @ 2016-08-05 7:42 UTC (permalink / raw) To: Junio C Hamano; +Cc: Johannes Sixt, Johannes Schindelin, René Scharfe, git On Thu, Aug 04, 2016 at 11:24:32PM -0700, Junio C Hamano wrote: > I do not know if we want to worry about st_add(1, strlen(s1)) > overflow around here, though. > [...] > + size_t len = strlen(s1) + 1; I wondered that, too, but I don't think it's possible. To overflow the size_t with "+1", strlen() must return the maximum value that it can hold. But such a string would need one more byte than that, for its trailing NUL. So assuming you cannot have a string that exceeds size_t in the first place, I think it is impossible to overflow here. -Peff ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-04 22:39 ` Junio C Hamano 2016-08-05 5:36 ` Johannes Sixt @ 2016-08-05 15:34 ` Johannes Schindelin 2016-08-05 16:13 ` Junio C Hamano 2016-08-05 21:57 ` Junio C Hamano 1 sibling, 2 replies; 17+ messages in thread From: Johannes Schindelin @ 2016-08-05 15:34 UTC (permalink / raw) To: Junio C Hamano; +Cc: René Scharfe, git [-- Attachment #1: Type: text/plain, Size: 745 bytes --] Hi Junio & René, On Thu, 4 Aug 2016, Junio C Hamano wrote: > Let's try it this way. How about this as a replacement? I like it (with the if (s2) test intead of if (s1), of course). But please record René as author, maybe mentioning myself with a "Diagnosed-by:" line. FWIW today's `pu` does pass the test suite without problems in my CI setup. This setup will from now on test next & pu in the Git for Windows SDK, and rebase Git for Windows' current master to git.git's maint, master, next & pu, every morning after a weekday (unless I forget to turn on my laptop, that is). Once it stabilizes, I will figure out a way how to publish the logs, because playing Lt Tawney Madison gets old real quick. Thanks, Dscho ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-05 15:34 ` Johannes Schindelin @ 2016-08-05 16:13 ` Junio C Hamano 2016-08-06 8:19 ` Johannes Schindelin 2016-08-05 21:57 ` Junio C Hamano 1 sibling, 1 reply; 17+ messages in thread From: Junio C Hamano @ 2016-08-05 16:13 UTC (permalink / raw) To: Johannes Schindelin; +Cc: René Scharfe, git Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > This setup will from now on test next & pu in the Git for Windows SDK, and > rebase Git for Windows' current master to git.git's maint, master, next & > pu, every morning after a weekday (unless I forget to turn on my laptop, > that is). Sounds really good. Thanks. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-05 16:13 ` Junio C Hamano @ 2016-08-06 8:19 ` Johannes Schindelin 0 siblings, 0 replies; 17+ messages in thread From: Johannes Schindelin @ 2016-08-06 8:19 UTC (permalink / raw) To: Junio C Hamano; +Cc: René Scharfe, git Hi Junio, On Fri, 5 Aug 2016, Junio C Hamano wrote: > Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > > > This setup will from now on test next & pu in the Git for Windows SDK, and > > rebase Git for Windows' current master to git.git's maint, master, next & > > pu, every morning after a weekday (unless I forget to turn on my laptop, > > that is). > > Sounds really good. Thanks. Report for today: - `pu` and `next` pass - rebasing the Windows-specific patches failed because of the merge conflicts when trying to apply the GCC-6 pragma, which I have on Git for Windows' `master` already. Note: I fixed said merge conflicts locally, and the way I set this up, the CI job learns the conflict resolution and will apply it automatically next time it runs. So: all greeeeen today. Ciao, Dscho ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-05 15:34 ` Johannes Schindelin 2016-08-05 16:13 ` Junio C Hamano @ 2016-08-05 21:57 ` Junio C Hamano 2016-08-05 22:30 ` René Scharfe 1 sibling, 1 reply; 17+ messages in thread From: Junio C Hamano @ 2016-08-05 21:57 UTC (permalink / raw) To: Johannes Schindelin; +Cc: René Scharfe, git Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > Hi Junio & René, > > On Thu, 4 Aug 2016, Junio C Hamano wrote: > >> Let's try it this way. How about this as a replacement? > > I like it (with the if (s2) test intead of if (s1), of course). But please > record René as author, maybe mentioning myself with a "Diagnosed-by:" > line. Hmph. I cannot do that unilaterally without waiting for René to respond, though. In any case, with only header and footer changes, here is what will appear in 'pu'. Thanks. -- >8 -- From: René Scharfe <l.s.r@web.de> Date: Thu, 4 Aug 2016 23:56:54 +0200 Subject: [PATCH] nedmalloc: work around overzealous GCC 6 warning With GCC 6, the strdup() function is declared with the "nonnull" attribute, stating that it is not allowed to pass a NULL value as parameter. In nedmalloc()'s reimplementation of strdup(), Postel's Law is heeded and NULL parameters are handled gracefully. GCC 6 complains about that now because it thinks that NULL cannot be passed to strdup() anyway. Because the callers in this project of strdup() must be prepared to call any implementation of strdup() supplied by the platform, so it is pointless to pretend that it is OK to call it with NULL. Remove the conditional based on NULL-ness of the input; this squelches the warning. See https://gcc.gnu.org/gcc-6/porting_to.html for details. Diagnosed-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com> --- compat/nedmalloc/nedmalloc.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c index 677d1b2..2d4ef59 100644 --- a/compat/nedmalloc/nedmalloc.c +++ b/compat/nedmalloc/nedmalloc.c @@ -955,12 +955,11 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** */ char *strdup(const char *s1) { - char *s2 = 0; - if (s1) { - size_t len = strlen(s1) + 1; - s2 = malloc(len); + size_t len = strlen(s1) + 1; + char *s2 = malloc(len); + + if (s2) memcpy(s2, s1, len); - } return s2; } #endif -- 2.9.2-766-gd7972a8 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning 2016-08-05 21:57 ` Junio C Hamano @ 2016-08-05 22:30 ` René Scharfe 0 siblings, 0 replies; 17+ messages in thread From: René Scharfe @ 2016-08-05 22:30 UTC (permalink / raw) To: Junio C Hamano, Johannes Schindelin; +Cc: git Am 05.08.2016 um 23:57 schrieb Junio C Hamano: > Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > >> Hi Junio & René, >> >> On Thu, 4 Aug 2016, Junio C Hamano wrote: >> >>> Let's try it this way. How about this as a replacement? >> >> I like it (with the if (s2) test intead of if (s1), of course). But please >> record René as author, maybe mentioning myself with a "Diagnosed-by:" >> line. > > Hmph. I cannot do that unilaterally without waiting for René to > respond, though. In any case, with only header and footer changes, > here is what will appear in 'pu'. It's fine with me, thanks. :) Minor comments below. > Thanks. > > -- >8 -- > From: René Scharfe <l.s.r@web.de> > Date: Thu, 4 Aug 2016 23:56:54 +0200 > Subject: [PATCH] nedmalloc: work around overzealous GCC 6 warning > > With GCC 6, the strdup() function is declared with the "nonnull" > attribute, stating that it is not allowed to pass a NULL value as > parameter. > > In nedmalloc()'s reimplementation of strdup(), Postel's Law is heeded > and NULL parameters are handled gracefully. GCC 6 complains about that > now because it thinks that NULL cannot be passed to strdup() anyway. > > Because the callers in this project of strdup() must be prepared to > call any implementation of strdup() supplied by the platform, so it > is pointless to pretend that it is OK to call it with NULL. > > Remove the conditional based on NULL-ness of the input; this > squelches the warning. My commit message would have been much shorter, probably too short. But perhaps add here: "Check the return value of malloc() instead to make sure we actually got memory to write to." > See https://gcc.gnu.org/gcc-6/porting_to.html for details. > > Diagnosed-by: Johannes Schindelin <johannes.schindelin@gmx.de> > Signed-off-by: René Scharfe <l.s.r@web.de> > Signed-off-by: Junio C Hamano <gitster@pobox.com> > --- > compat/nedmalloc/nedmalloc.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c > index 677d1b2..2d4ef59 100644 > --- a/compat/nedmalloc/nedmalloc.c > +++ b/compat/nedmalloc/nedmalloc.c > @@ -955,12 +955,11 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void ** > */ > char *strdup(const char *s1) > { > - char *s2 = 0; > - if (s1) { > - size_t len = strlen(s1) + 1; > - s2 = malloc(len); > + size_t len = strlen(s1) + 1; > + char *s2 = malloc(len); > + You added this blank line. OK. > + if (s2) > memcpy(s2, s1, len); > - } > return s2; > } > #endif > ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2016-08-06 21:59 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-08-04 16:07 [PATCH 0/2] Patches to let Git build with GCC 6 and DEVELOPER=SureWhyNot Johannes Schindelin 2016-08-04 16:07 ` [PATCH 1/2] nedmalloc: fix misleading indentation Johannes Schindelin 2016-08-04 16:07 ` [PATCH 2/2] nedmalloc: work around overzealous GCC 6 warning Johannes Schindelin 2016-08-04 17:41 ` Junio C Hamano 2016-08-05 15:38 ` Johannes Schindelin 2016-08-04 21:56 ` René Scharfe 2016-08-04 22:33 ` Junio C Hamano 2016-08-04 22:39 ` Junio C Hamano 2016-08-05 5:36 ` Johannes Sixt 2016-08-05 5:40 ` Johannes Sixt 2016-08-05 6:24 ` Junio C Hamano 2016-08-05 7:42 ` Jeff King 2016-08-05 15:34 ` Johannes Schindelin 2016-08-05 16:13 ` Junio C Hamano 2016-08-06 8:19 ` Johannes Schindelin 2016-08-05 21:57 ` Junio C Hamano 2016-08-05 22:30 ` René Scharfe
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).