| 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;
|
|
|