[PATCH:libXt 4/6] Fix char vs. unsigned char warnings.
walter harms
wharms at bfs.de
Thu Jun 27 02:55:40 PDT 2013
Am 27.06.2013 08:33, schrieb Thomas Klausner:
> On Wed, Jun 26, 2013 at 08:55:35PM -0400, Thomas E. Dickey wrote:
>> On Tue, Jun 25, 2013 at 11:02:48PM +0200, Thomas Klausner wrote:
>>> ---
>>> src/ResConfig.c | 4 ++--
>>> src/TMparse.c | 4 ++--
>>> 2 files changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/src/ResConfig.c b/src/ResConfig.c
>>> index 152d9cf..5a7f6d2 100644
>>> --- a/src/ResConfig.c
>>> +++ b/src/ResConfig.c
>>> @@ -892,7 +892,7 @@ _XtResourceConfigurationEH (
>>> int actual_format;
>>> unsigned long nitems;
>>> unsigned long leftover;
>>> - unsigned char *data = NULL;
>>> + char *data = NULL;
>>> unsigned long resource_len;
>>> char *data_ptr;
>>> char *resource;
>>> @@ -952,7 +952,7 @@ _XtResourceConfigurationEH (
>>> pd->rcm_data, 0L, 8192L,
>>> TRUE, XA_STRING,
>>> &actual_type, &actual_format, &nitems, &leftover,
>>> - &data ) == Success && actual_type == XA_STRING
>>> + (unsigned char **)&data ) == Success && actual_type == XA_STRING
>>> && actual_format == 8) {
>>
>> One problem with casts is that they're telling the compiler to ignore its type-checking.
>> Casting an address like that happens to work - usually - but not always.
>
> The problem is that the same variable is used in strtoul as first
> argument, which wants a 'const char *', and in XGetWindowProperty as
> 12th (if I didn't miscount), which wants an unsigned char **.
>
> i.e.
>
> if (XGetWindowProperty (XtDisplay(w),
> XtWindow (w),
> pd->rcm_data, 0L, 8192L,
> TRUE, XA_STRING,
> &actual_type, &actual_format, &nitems, &leftover,
> (unsigned char **)&data ) == Success && actual_type == XA_STRING
> && actual_format == 8) {
> ...
> resource_len = strtoul (data, &data_ptr, 10);
>
> How would you suggest fixing issues like that?
> Thomas
>
i would suggest to simplify the code first by making two lines.
That would improve readablity exspecially since XGetWindowProperty()
takes a lot of arguments.
ret=XGetWindowProperty(..);
if ( ret == Success && actual_type == XA_STRING && actual_format == 8) {
And when you need a cast anyway why not using a "void *" ?
just my 2 cents,
wh
More information about the xorg-devel
mailing list