[PATCH 8/10] Fix some minor warnings to allow -Werror.

Subsystems: the rest

DORMANTno replies

4 messages, 3 authors, 2016-06-15 · open the first message on its own page

[PATCH 8/10] Fix some minor warnings to allow -Werror.

From: Ramsay Jones <hidden>
Date: 2016-06-15 22:42:35

Signed-off-by: Ramsay Allan Jones <redacted>
---
 builtin-mailinfo.c |    3 ++-
 diff.c             |    1 +
 2 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
index 3e40747..bb5e7b7 100644
--- a/builtin-mailinfo.c
+++ b/builtin-mailinfo.c
@@ -531,7 +531,8 @@ static int decode_b_segment(char *in, ch
 static void convert_to_utf8(char *line, char *charset)
 {
 #ifndef NO_ICONV
-	char *in, *out;
+	const char *in;
+	char *out;
 	size_t insize, outsize, nrc;
 	char outbuf[4096]; /* cheat */
 	static char latin_one[] = "latin1";
diff --git a/diff.c b/diff.c
index 5a71489..81630c0 100644
--- a/diff.c
+++ b/diff.c
@@ -614,6 +614,7 @@ static void emit_binary_diff(mmfile_t *o
 	 * whichever is smaller.
 	 */
 	delta = NULL;
+	orig_size = 0;
 	deflated = deflate_it(two->ptr, two->size, &deflate_size);
 	if (one->size && two->size) {
 		delta = diff_delta(one->ptr, one->size,
-- 
1.4.1

Re: [PATCH 8/10] Fix some minor warnings to allow -Werror.

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:35

"Ramsay Jones" [off-list ref] writes:
quoted hunk
diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
index 3e40747..bb5e7b7 100644
--- a/builtin-mailinfo.c
+++ b/builtin-mailinfo.c
@@ -531,7 +531,8 @@ static int decode_b_segment(char *in, ch
 static void convert_to_utf8(char *line, char *charset)
 {
 #ifndef NO_ICONV
-	char *in, *out;
+	const char *in;
+	char *out;
 	size_t insize, outsize, nrc;
 	char outbuf[4096]; /* cheat */
 	static char latin_one[] = "latin1";
This kills the compilation with:

gcc -o builtin-mailinfo.o -c -O2 -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wall -Wdeclaration-after-statement -g -DSHA1_HEADER='<openssl/sha.h>' -DNO_STRLCPY builtin-mailinfo.c
cc1: warnings being treated as errors
builtin-mailinfo.c: In function 'convert_to_utf8':
builtin-mailinfo.c:561: warning: passing argument 2 of 'iconv' from incompatible pointer type

where the line 561 reads:

	nrc = iconv(conv, &in, &insize, &out, &outsize);
quoted hunk
diff --git a/diff.c b/diff.c
index 5a71489..81630c0 100644
--- a/diff.c
+++ b/diff.c
@@ -614,6 +614,7 @@ static void emit_binary_diff(mmfile_t *o
 	 * whichever is smaller.
 	 */
 	delta = NULL;
+	orig_size = 0;
 	deflated = deflate_it(two->ptr, two->size, &deflate_size);
 	if (one->size && two->size) {
 		delta = diff_delta(one->ptr, one->size,
This is not wrong per se, but is working around a stupid compiler that
do not understand the dataflow.  orig_size is only used when
delta is non NULL, and when delta is non NULL, the variable is
always set.  Not very happy but is acceptable.

Re: [PATCH 8/10] Fix some minor warnings to allow -Werror.

From: Rocco Rutte <hidden>
Date: 2016-06-15 22:42:35

Hi,

* Junio C Hamano [06-08-02 00:46:23 -0700] wrote:

[...]
This kills the compilation with:

gcc -o builtin-mailinfo.o -c -O2 -Werror -ansi -pedantic -std=c99 -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wall -Wdeclaration-after-statement -g -DSHA1_HEADER='<openssl/sha.h>' -DNO_STRLCPY builtin-mailinfo.c
cc1: warnings being treated as errors
builtin-mailinfo.c: In function 'convert_to_utf8':
builtin-mailinfo.c:561: warning: passing argument 2 of 'iconv' from incompatible pointer type

where the line 561 reads:

nrc = iconv(conv, &in, &insize, &out, &outsize);
It depends on the iconv() implementation as what the input pointer is 
defined: some use just 'char*' while others use 'const char*' (GNU 
libiconv IIRC).

   bye, Rocco
-- 
:wq!

RE: [PATCH 8/10] Fix some minor warnings to allow -Werror.

From: Ramsay Jones <hidden>
Date: 2016-06-15 22:42:35

On Wed, 2006-08-02 at 8:46, Junio C Hamano wrote:
"Ramsay Jones" [off-list ref] writes:
quoted
diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
index 3e40747..bb5e7b7 100644
--- a/builtin-mailinfo.c
+++ b/builtin-mailinfo.c
@@ -531,7 +531,8 @@ static int decode_b_segment(char *in, ch
 static void convert_to_utf8(char *line, char *charset)
 {
 #ifndef NO_ICONV
-	char *in, *out;
+	const char *in;
+	char *out;
 	size_t insize, outsize, nrc;
 	char outbuf[4096]; /* cheat */
 	static char latin_one[] = "latin1";
This kills the compilation with:

gcc -o builtin-mailinfo.o -c -O2 -Werror -ansi -pedantic -std=c99 
-D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wall 
-Wdeclaration-after-statement -g -DSHA1_HEADER='<openssl/sha.h>' 
-DNO_STRLCPY builtin-mailinfo.c
cc1: warnings being treated as errors
builtin-mailinfo.c: In function 'convert_to_utf8':
builtin-mailinfo.c:561: warning: passing argument 2 of 'iconv' 
from incompatible pointer type

where the line 561 reads:

	nrc = iconv(conv, &in, &insize, &out, &outsize);
OK, so I get exactly the same if I don't make the indicated change!
The second param of iconv() must have changed from const char* to char*
at some point in the last six years.
Just ignore this.
quoted
diff --git a/diff.c b/diff.c
index 5a71489..81630c0 100644
--- a/diff.c
+++ b/diff.c
@@ -614,6 +614,7 @@ static void emit_binary_diff(mmfile_t *o
 	 * whichever is smaller.
 	 */
 	delta = NULL;
+	orig_size = 0;
 	deflated = deflate_it(two->ptr, two->size, &deflate_size);
 	if (one->size && two->size) {
 		delta = diff_delta(one->ptr, one->size,
This is not wrong per se, but is working around a stupid compiler that
do not understand the dataflow.  orig_size is only used when
delta is non NULL, and when delta is non NULL, the variable is
always set.  Not very happy but is acceptable.
Yes, you are absolutely correct. I agree it would be nice if gcc was
"fixed" so that it could detect this situation, but I'm not going to
hold my breath. It just seemed to be the lesser evil.

Ramsay
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help