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


_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to