[PATCH:xf86-video-mga 2/2] Use correct type in function call.

Thomas Klausner wiz at netbsd.org
Tue Jul 28 09:00:03 PDT 2015


On Tue, Feb 24, 2015 at 07:47:09AM +0100, Mark Kettenis wrote:
> >  On Mon, Feb 23, 2015 at 4:28 AM, Thomas Klausner <wiz at netbsd.org> wrote:
> > > Fixes
> > > passing argument 2 of 'pci_device_cfg_read_u32' from incompatible
> > > pointer type
> > > pciaccess.h:153:5: note: expected '__uint32_t *' but argument is of type
> > > 'CARD32 *'
> > >
> > > Signed-off-by: Thomas Klausner <wiz at NetBSD.org>
> > > ---
> > >  src/mga_dac3026.c | 6 +++++-
> > >  1 file changed, 5 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/src/mga_dac3026.c b/src/mga_dac3026.c
> > > index 97c2c7a..e825702 100644
> > > --- a/src/mga_dac3026.c
> > > +++ b/src/mga_dac3026.c
> > > @@ -852,8 +852,12 @@ MGA3026Save(ScrnInfoPtr pScrn, vgaRegPtr vgaReg,
> > > MGARegPtr mgaReg,
> > >                 mgaReg->DacRegs[i]       = inTi3026(MGADACregs[i]);
> > >
> > >  #ifdef XSERVER_LIBPCIACCESS
> > > -       pci_device_cfg_read_u32(pMga->PciInfo, & mgaReg->Option,
> > > +    {
> > > +       uint32_t Option;
> > > +       pci_device_cfg_read_u32(pMga->PciInfo, & Option,
> > >                                 PCI_OPTION_REG);
> > > +        mgaReg->Option = Option;
> >
> >  I don't understand why the previous code generated that warning (isn't
> >  __uint32_t* implicitly castable to CARD32*?)
> 
> On 32-bit systems, CARD32 is "unsigned long", whereas uint32_t is usually
> "unsigned int".  And since "int" and "long" might differ in size on other
> systems, the compiler (rightfully) complains.
> 
> >  but even so, why isn't a cast the appropriate solution?
> 
> Because casts almost never are the appropriate solution if they can be
> avoided?

Anything I can do to make progress with this patch?
 Thomas


More information about the xorg-devel mailing list