This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[COMMIT PATCH] charset.c: fix -Wpointer-sign
- From: Pedro Alves <palves at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Thu, 07 Mar 2013 19:11:06 +0000
- Subject: [COMMIT PATCH] charset.c: fix -Wpointer-sign
$ make WERROR_CFLAGS="-Wpointer-sign -Werror" charset.o 2>&1 1>/dev/null
../../src/gdb/charset.c: In function âwchar_iterateâ:
../../src/gdb/charset.c:665:13: error: pointer targets in assignment differ in signedness [-Werror=pointer-sign]
../../src/gdb/charset.c:691:13: error: pointer targets in assignment differ in signedness [-Werror=pointer-sign]
../../src/gdb/charset.c:706:12: error: pointer targets in assignment differ in signedness [-Werror=pointer-sign]
The encoding conversion code works with gdb_byte arrays as the generic
buffers that hold strings of any encoding/width. Changing the type of
this field to gdb_byte* removes the need for one cast, and makes
everything work with the same types. That's good -- WRT to strings,
"char *" is (almost) consistently throughout GDB only used for
ascii-ish strings.
gdb/
2013-03-07 Pedro Alves <palves@redhat.com>
* charset.c (struct wchar_iterator) <input>: Change type to 'const
gdb_byte *'.
(make_wchar_iterator): Remove cast to char*.
(wchar_iterate): Change type of local.
---
gdb/charset.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gdb/charset.c b/gdb/charset.c
index 165f90f..4cd6f20 100644
--- a/gdb/charset.c
+++ b/gdb/charset.c
@@ -571,7 +571,7 @@ struct wchar_iterator
iconv_t desc;
/* The input string. This is updated as convert characters. */
- char *input;
+ const gdb_byte *input;
/* The number of bytes remaining in the input. */
size_t bytes;
@@ -597,7 +597,7 @@ make_wchar_iterator (const gdb_byte *input, size_t bytes,
result = XNEW (struct wchar_iterator);
result->desc = desc;
- result->input = (char *) input;
+ result->input = input;
result->bytes = bytes;
result->width = width;
@@ -641,7 +641,7 @@ wchar_iterate (struct wchar_iterator *iter,
while (iter->bytes > 0)
{
char *outptr = (char *) &iter->out[0];
- char *orig_inptr = iter->input;
+ const gdb_byte *orig_inptr = iter->input;
size_t orig_in = iter->bytes;
size_t out_avail = out_request * sizeof (gdb_wchar_t);
size_t num;