[PATCH] config.c: fix a compiler warning

2014-04-16 Thread Stepan Kasal
Date: Thu, 10 Apr 2014 16:37:15 +0200

This change fixes a gcc warning when building msysGit.
---
 config.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/config.c b/config.c
index 314d8ee..0b7e4f8 100644
--- a/config.c
+++ b/config.c
@@ -572,7 +572,7 @@ static void die_bad_number(const char *name, const char 
*value)
 
 int git_config_int(const char *name, const char *value)
 {
-   int ret;
+   int ret = 0;
if (!git_parse_int(value, ret))
die_bad_number(name, value);
return ret;
@@ -580,7 +580,7 @@ int git_config_int(const char *name, const char *value)
 
 int64_t git_config_int64(const char *name, const char *value)
 {
-   int64_t ret;
+   int64_t ret = 0;
if (!git_parse_int64(value, ret))
die_bad_number(name, value);
return ret;
-- 
1.9.2.msysgit.0.154.g978f18d

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] config.c: fix a compiler warning

2014-04-16 Thread Jeff King
On Wed, Apr 16, 2014 at 04:13:53PM +0200, Stepan Kasal wrote:

 Date: Thu, 10 Apr 2014 16:37:15 +0200
 
 This change fixes a gcc warning when building msysGit.

What warning? I'm assuming -Wuninitialized?

 diff --git a/config.c b/config.c
 index 314d8ee..0b7e4f8 100644
 --- a/config.c
 +++ b/config.c
 @@ -572,7 +572,7 @@ static void die_bad_number(const char *name, const char 
 *value)
  
  int git_config_int(const char *name, const char *value)
  {
 - int ret;
 + int ret = 0;
   if (!git_parse_int(value, ret))
   die_bad_number(name, value);
   return ret;

Hmph. Generally gcc should assume that a variable is initialized after a
pointer to it is passed into a function. Unless it inlines that function
and can see that it isn't. But if we do inline git_parse_int, we see
that it ret is always initialized if it returns non-zero.

If it also inlines die_bad_number, it would see that we end in die(),
which is marked NORETURN. But if it does not, it will not realize that
we do not get to return ret in that case.

So perhaps a better solution is:

diff --git a/config.c b/config.c
index 6821cef..a30cb5c 100644
--- a/config.c
+++ b/config.c
@@ -557,6 +557,7 @@ int git_parse_ulong(const char *value, unsigned long *ret)
return 1;
 }
 
+NORETURN
 static void die_bad_number(const char *name, const char *value)
 {
const char *reason = errno == ERANGE ?

Does that also silence the warning?

-Peff
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] config.c: fix a compiler warning

2014-04-16 Thread Torsten Bögershausen
On 2014-04-16 17.29, Jeff King wrote:
 On Wed, Apr 16, 2014 at 04:13:53PM +0200, Stepan Kasal wrote:
 
 Date: Thu, 10 Apr 2014 16:37:15 +0200

 This change fixes a gcc warning when building msysGit.

[]
 +NORETURN
  static void die_bad_number(const char *name, const char *value)
  {
   const char *reason = errno == ERANGE ?
 
 Does that also silence the warning?
 
 -Peff
This works under gcc 4.2.1 Mac OS: the warning is away.


--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html