[mplayer-dev at kernel.dk: [MPlayer-dev-eng] [PATCH] sizeof(int) != sizeof(pointer)]
Anders Johansson
ajh at watri.org.au
Thu Mar 13 01:28:59 CET 2003
Just a little "I told you so",
> On Wed, Mar 12, 2003 at 09:31:21PM +0100, Jens Axboe wrote:
> > On Wed, Mar 12 2003, D Richard Felker III wrote:
> > > On Wed, Mar 12, 2003 at 01:24:52PM +0100, Jens Axboe wrote:
> > > > On Wed, Mar 12 2003, D Richard Felker III wrote:
> > > > > On Wed, Mar 12, 2003 at 11:46:10AM +0100, Jens Axboe wrote:
> > > > > >
> > > > > > Is someone going to commit this or not? It's clearly a bug.
> > > > > >
> > > > > >
> > > > > > From: Jens Axboe <mplayer-dev at kernel.dk>
> > > > > > Reply-To: mplayer-dev-eng at mplayerhq.hu
> > > > > > Date: Tue, 11 Mar 2003 10:39:28 +0100
> > > > > > To: mplayer-dev-eng at mplayerhq.hu
> > > > > > Subject: [MPlayer-dev-eng] [PATCH] sizeof(int) != sizeof(pointer)
> > > > > >
> > > > > > Hi,
> > > > > >
> > > > > > Should not need a lot of comments, this is pretty basic. Though shallt
> > > > > > not cast pointers to ints, on 64-bit archs this is really bad. Below
> > > > > > patch fixes segfault on volume up/down for me with mplayer cvs.
> > > > >
> > > > > There is definitely a bug but this is not the correct fix. A quick
> > > > > glance seems to indicate that the second argument to control() is
> > > > > always a pointer, so it should just be declared to take a void *!!!
> > > > > 1000l to whoever wrote that mess!
> > > >
> > > > Well that is fine, fix it that way if you want. As long as it will hold
> > > > a pointer. void * is just as, if not more so, ugly as unsigned long,
> > > > though :)
> > >
> > > Sorry if you thought the 1000l was for you; it was for whoever
> >
> > I don't even know what 1000l means, fwiw...
>
> It means the person gets to drink 1000 liters of cola for writing
> broken code. :))
>
> > > originally wrote the mess in libao2. And void * is better, since it's
> > > guaranteed to work and unsigned long isn't. (it's possible that
> > > unsigned long is not as big as a pointer!)
> >
> > void * might be better because it avoids some casts in this case,
> > however unsigned long will hold a pointer across all archs I know. In
> > fact, lots of software relies on this fact. So there's no difference
> > there.
>
> Hmm, I don't see why a 64 bit architecture couldn't use 64 bit
> pointers and 32 bit longs... IIRC there's some platform that does this
> to avoid breaking programs that assume sizeof(long)==4. Perhaps gcc
> always has sizeof(long) >= sizeof(void*), but there's no reason this
> should be true in general. (OTOH, we only support gcc anyway.)
I think it is A'rpis design from the beginning, funny thing is that I
wanted to fix it some 2 years ago or so but was never allowed. My
argument then was that it would never work on 64 bit architectures :).
> Rich
//Anders
More information about the MPlayer-dev-eng
mailing list