[PATCH:libXt 4/6] Fix char vs. unsigned char warnings.

Thomas Klausner wiz at netbsd.org
Wed Jun 26 23:33:02 PDT 2013


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



More information about the xorg-devel mailing list