Index: gdb/charset.c |
diff --git a/gdb/charset.c b/gdb/charset.c |
index 89baf461f4a0b684efae74f6533e2717362af90c..1f44e8fc1c86108dd8080728bfae80d54f5f4301 100644 |
--- a/gdb/charset.c |
+++ b/gdb/charset.c |
@@ -1,6 +1,6 @@ |
/* Character set conversion support for GDB. |
- Copyright (C) 2001, 2003, 2007-2012 Free Software Foundation, Inc. |
+ Copyright (C) 2001-2013 Free Software Foundation, Inc. |
This file is part of GDB. |
@@ -30,7 +30,7 @@ |
#include "gdb_vecs.h" |
#include <stddef.h> |
-#include "gdb_string.h" |
+#include <string.h> |
#include <ctype.h> |
#ifdef USE_WIN32API |
@@ -474,7 +474,7 @@ convert_between_encodings (const char *from, const char *to, |
iconv_t desc; |
struct cleanup *cleanups; |
size_t inleft; |
- char *inp; |
+ ICONV_CONST char *inp; |
unsigned int space_request; |
/* Often, the host and target charsets will be the same. */ |
@@ -490,7 +490,7 @@ convert_between_encodings (const char *from, const char *to, |
cleanups = make_cleanup (cleanup_iconv, &desc); |
inleft = num_bytes; |
- inp = (char *) bytes; |
+ inp = (ICONV_CONST char *) bytes; |
space_request = num_bytes; |
@@ -506,7 +506,7 @@ convert_between_encodings (const char *from, const char *to, |
outp = obstack_base (output) + old_size; |
outleft = space_request; |
- r = iconv (desc, (ICONV_CONST char **) &inp, &inleft, &outp, &outleft); |
+ r = iconv (desc, &inp, &inleft, &outp, &outleft); |
/* Now make sure that the object on the obstack only includes |
bytes we have converted. */ |
@@ -531,7 +531,7 @@ convert_between_encodings (const char *from, const char *to, |
{ |
char octal[5]; |
- sprintf (octal, "\\%.3o", *inp & 0xff); |
+ xsnprintf (octal, sizeof (octal), "\\%.3o", *inp & 0xff); |
obstack_grow_str (output, octal); |
++inp; |
@@ -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; |
@@ -640,14 +640,15 @@ wchar_iterate (struct wchar_iterator *iter, |
out_request = 1; |
while (iter->bytes > 0) |
{ |
+ ICONV_CONST char *inptr = (ICONV_CONST char *) iter->input; |
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; |
- size_t r = iconv (iter->desc, |
- (ICONV_CONST char **) &iter->input, |
- &iter->bytes, &outptr, &out_avail); |
+ size_t r = iconv (iter->desc, &inptr, &iter->bytes, &outptr, &out_avail); |
+ |
+ iter->input = (gdb_byte *) inptr; |
if (r == (size_t) -1) |
{ |
@@ -965,7 +966,6 @@ intermediate_encoding (void) |
iconv_t desc; |
static const char *stored_result = NULL; |
char *result; |
- int i; |
if (stored_result) |
return stored_result; |