* [PATCH 0/3] MSVC fixes
@ 2013-05-09 1:10 Sven Strickroth
2013-05-09 1:12 ` [PATCH 1/3] poll.h lies in the same folder, so use normal quotes for include Sven Strickroth
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Sven Strickroth @ 2013-05-09 1:10 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
Hi,
I've 3 patches fixing warnings and errors when compiling with latest
MSVC (2012).
--
Best regards,
Sven Strickroth
PGP key id F5A9D4C4 @ any key-server
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] poll.h lies in the same folder, so use normal quotes for include
2013-05-09 1:10 [PATCH 0/3] MSVC fixes Sven Strickroth
@ 2013-05-09 1:12 ` Sven Strickroth
2013-05-09 1:31 ` Sven Strickroth
2013-05-09 1:13 ` [PATCH 2/3] mingw.h: Define only if necessary Sven Strickroth
2013-05-09 1:13 ` [PATCH 3/3] Initialize variables with values Sven Strickroth
2 siblings, 1 reply; 9+ messages in thread
From: Sven Strickroth @ 2013-05-09 1:12 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
Some compilers, like Visual C++ complain when <> is used instead of
double quotes for non system includes.
Signed-off-by: Sven Strickroth <email@cs-ware.de>
---
compat/poll/poll.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/compat/poll/poll.c b/compat/poll/poll.c
index 7d226ec..b85386a 100644
--- a/compat/poll/poll.c
+++ b/compat/poll/poll.c
@@ -31,7 +31,7 @@
#include <sys/types.h>
/* Specification. */
-#include <poll.h>
+#include "poll.h"
#include <errno.h>
#include <limits.h>
--
Best regards,
Sven Strickroth
PGP key id F5A9D4C4 @ any key-server
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] mingw.h: Define only if necessary
2013-05-09 1:10 [PATCH 0/3] MSVC fixes Sven Strickroth
2013-05-09 1:12 ` [PATCH 1/3] poll.h lies in the same folder, so use normal quotes for include Sven Strickroth
@ 2013-05-09 1:13 ` Sven Strickroth
2013-05-09 1:13 ` [PATCH 3/3] Initialize variables with values Sven Strickroth
2 siblings, 0 replies; 9+ messages in thread
From: Sven Strickroth @ 2013-05-09 1:13 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
Since the latest version of MSVC EWOULDBLOCK, EAFNOSUPPORT and
ECONNABORTED are defined in errno.h. When used with MSVC mingw.h
is included from msvc.h and causes warnings about redefinitions.
Signed-off-by: Sven Strickroth <email@cs-ware.de>
---
compat/mingw.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/compat/mingw.h b/compat/mingw.h
index 685cd2c..c424333 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -32,7 +32,9 @@ typedef int socklen_t;
#define WEXITSTATUS(x) ((x) & 0xff)
#define WTERMSIG(x) SIGTERM
+#ifndef EWOULDBLOCK
#define EWOULDBLOCK EAGAIN
+#endif
#define SHUT_WR SD_SEND
#define SIGHUP 1
@@ -46,8 +48,12 @@ typedef int socklen_t;
#define F_SETFD 2
#define FD_CLOEXEC 0x1
+#ifndef EAFNOSUPPORT
#define EAFNOSUPPORT WSAEAFNOSUPPORT
+#endif
+#ifndef ECONNABORTED
#define ECONNABORTED WSAECONNABORTED
+#endif
struct passwd {
char *pw_name;
--
Best regards,
Sven Strickroth
PGP key id F5A9D4C4 @ any key-server
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] Initialize variables with values
2013-05-09 1:10 [PATCH 0/3] MSVC fixes Sven Strickroth
2013-05-09 1:12 ` [PATCH 1/3] poll.h lies in the same folder, so use normal quotes for include Sven Strickroth
2013-05-09 1:13 ` [PATCH 2/3] mingw.h: Define only if necessary Sven Strickroth
@ 2013-05-09 1:13 ` Sven Strickroth
2013-05-09 12:40 ` Krzysztof Mazur
2013-05-09 13:21 ` Jonathan Nieder
2 siblings, 2 replies; 9+ messages in thread
From: Sven Strickroth @ 2013-05-09 1:13 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano
With MSVC initializing a variable with "int a=a" causes a warning about
using an uninitialized value.
Signed-off-by: Sven Strickroth <email@cs-ware.de>
---
builtin/rev-list.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index 67701be..13afacd 100644
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -338,7 +338,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
mark_edges_uninteresting(revs.commits, &revs, show_edge);
if (bisect_list) {
- int reaches = reaches, all = all;
+ int reaches = 0, all = 0;
revs.commits = find_bisection(revs.commits, &reaches, &all,
bisect_find_all);
--
Best regards,
Sven Strickroth
PGP key id F5A9D4C4 @ any key-server
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] poll.h lies in the same folder, so use normal quotes for include
2013-05-09 1:12 ` [PATCH 1/3] poll.h lies in the same folder, so use normal quotes for include Sven Strickroth
@ 2013-05-09 1:31 ` Sven Strickroth
0 siblings, 0 replies; 9+ messages in thread
From: Sven Strickroth @ 2013-05-09 1:31 UTC (permalink / raw)
To: git
Am 09.05.2013 03:12 schrieb Sven Strickroth:
> Some compilers, like Visual C++ complain when <> is used instead of
> double quotes for non system includes.
I just noticed that this patch isn't necessary for 1.8.3 (since
41f2999180f5a58f2a4214d896359c1587c9024f) any more. Sorry for the noise
- I was still building against 1.8.2.2.
--
Best regards,
Sven Strickroth
PGP key id F5A9D4C4 @ any key-server
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] Initialize variables with values
2013-05-09 1:13 ` [PATCH 3/3] Initialize variables with values Sven Strickroth
@ 2013-05-09 12:40 ` Krzysztof Mazur
2013-05-09 13:21 ` Jonathan Nieder
1 sibling, 0 replies; 9+ messages in thread
From: Krzysztof Mazur @ 2013-05-09 12:40 UTC (permalink / raw)
To: Sven Strickroth; +Cc: git, Junio C Hamano
On Thu, May 09, 2013 at 03:13:39AM +0200, Sven Strickroth wrote:
> With MSVC initializing a variable with "int a=a" causes a warning about
> using an uninitialized value.
>
> Signed-off-by: Sven Strickroth <email@cs-ware.de>
> ---
> builtin/rev-list.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/builtin/rev-list.c b/builtin/rev-list.c
> index 67701be..13afacd 100644
> --- a/builtin/rev-list.c
> +++ b/builtin/rev-list.c
> @@ -338,7 +338,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
> mark_edges_uninteresting(revs.commits, &revs, show_edge);
>
> if (bisect_list) {
> - int reaches = reaches, all = all;
> + int reaches = 0, all = 0;
>
> revs.commits = find_bisection(revs.commits, &reaches, &all,
> bisect_find_all);
But this generates worse code, at least using gcc 4.7.2:
--- old 2013-05-09 14:33:22.000000000 +0200
+++ new 2013-05-09 14:33:02.000000000 +0200
@@ -1,2 +1,2 @@
text data bss dec hex filename
- 4283 0 0 4283 10bb builtin/rev-list.o
+ 4299 0 0 4299 10cb builtin/rev-list.o
Krzysiek
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] Initialize variables with values
2013-05-09 1:13 ` [PATCH 3/3] Initialize variables with values Sven Strickroth
2013-05-09 12:40 ` Krzysztof Mazur
@ 2013-05-09 13:21 ` Jonathan Nieder
2013-05-09 13:49 ` Sven Strickroth
2013-05-09 14:32 ` René Scharfe
1 sibling, 2 replies; 9+ messages in thread
From: Jonathan Nieder @ 2013-05-09 13:21 UTC (permalink / raw)
To: Sven Strickroth; +Cc: git, Junio C Hamano
Hi,
Sven Strickroth wrote:
> With MSVC initializing a variable with "int a=a" causes a warning about
> using an uninitialized value.
[...]
> --- a/builtin/rev-list.c
> +++ b/builtin/rev-list.c
> @@ -338,7 +338,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
> mark_edges_uninteresting(revs.commits, &revs, show_edge);
>
> if (bisect_list) {
> - int reaches = reaches, all = all;
> + int reaches = 0, all = 0;
A correct way to spell this is
int reaches, all;
which, as a bonus, lets the compiler warn if they are used
uninitialized. Does that provoke warnings?
Thanks,
Jonathan
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] Initialize variables with values
2013-05-09 13:21 ` Jonathan Nieder
@ 2013-05-09 13:49 ` Sven Strickroth
2013-05-09 14:32 ` René Scharfe
1 sibling, 0 replies; 9+ messages in thread
From: Sven Strickroth @ 2013-05-09 13:49 UTC (permalink / raw)
To: Jonathan Nieder; +Cc: git, Junio C Hamano
Am 09.05.2013 15:21 schrieb Jonathan Nieder:
> Sven Strickroth wrote:
>
>> With MSVC initializing a variable with "int a=a" causes a warning about
>> using an uninitialized value.
> [...]
>> --- a/builtin/rev-list.c
>> +++ b/builtin/rev-list.c
>> @@ -338,7 +338,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
>> mark_edges_uninteresting(revs.commits, &revs, show_edge);
>>
>> if (bisect_list) {
>> - int reaches = reaches, all = all;
>> + int reaches = 0, all = 0;
>
> A correct way to spell this is
>
> int reaches, all;
>
> which, as a bonus, lets the compiler warn if they are used
> uninitialized. Does that provoke warnings?
This seems to be ok.
--
Best regards,
Sven Strickroth
PGP key id F5A9D4C4 @ any key-server
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] Initialize variables with values
2013-05-09 13:21 ` Jonathan Nieder
2013-05-09 13:49 ` Sven Strickroth
@ 2013-05-09 14:32 ` René Scharfe
1 sibling, 0 replies; 9+ messages in thread
From: René Scharfe @ 2013-05-09 14:32 UTC (permalink / raw)
To: Jonathan Nieder; +Cc: Sven Strickroth, git, Junio C Hamano
Am 09.05.2013 15:21, schrieb Jonathan Nieder:
> Hi,
>
> Sven Strickroth wrote:
>
>> With MSVC initializing a variable with "int a=a" causes a warning about
>> using an uninitialized value.
> [...]
>> --- a/builtin/rev-list.c
>> +++ b/builtin/rev-list.c
>> @@ -338,7 +338,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
>> mark_edges_uninteresting(revs.commits, &revs, show_edge);
>>
>> if (bisect_list) {
>> - int reaches = reaches, all = all;
>> + int reaches = 0, all = 0;
>
> A correct way to spell this is
>
> int reaches, all;
>
> which, as a bonus, lets the compiler warn if they are used
> uninitialized. Does that provoke warnings?
Only find_bisection() (defined in bisect.c) is used to set these
variables in that block. While it sets "all" unconditionally, it
doesn't always set "reaches" -- only if it actually finds something.
That's still safe because the following code path errors out early if
nothing was found before it uses "reaches".
Are there C compilers that can analyse initialization and usage of
variables across compilation units like that?
Anyway, initializing the variables to zero makes this code consistent
with the second call-site of find_bisection(). Making sure this
function sets "reaches" unconditionally as well and dropping the
initialization from both places may be even better.
René
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-05-09 14:33 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-09 1:10 [PATCH 0/3] MSVC fixes Sven Strickroth
2013-05-09 1:12 ` [PATCH 1/3] poll.h lies in the same folder, so use normal quotes for include Sven Strickroth
2013-05-09 1:31 ` Sven Strickroth
2013-05-09 1:13 ` [PATCH 2/3] mingw.h: Define only if necessary Sven Strickroth
2013-05-09 1:13 ` [PATCH 3/3] Initialize variables with values Sven Strickroth
2013-05-09 12:40 ` Krzysztof Mazur
2013-05-09 13:21 ` Jonathan Nieder
2013-05-09 13:49 ` Sven Strickroth
2013-05-09 14:32 ` 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).