Author: ranma Date: Sun Aug 24 15:52:54 2008 New Revision: 27482 Log: Fix 'cast from pointer to integer of different size' on 64bit architectures. Casting to long should work for 32bit and 64bit and not make a difference to the boolean operation (since 'format' is always 32bit (int) the upper 32bit of 'arg' won't matter, but the compiler should be happy now. Casting both to unsigned makes sure the compiler isn't messing things up by sign-extending 'format' to 64bit before masking) Modified: trunk/libao2/ao_oss.c Modified: trunk/libao2/ao_oss.c ============================================================================== --- trunk/libao2/ao_oss.c (original) +++ trunk/libao2/ao_oss.c Sun Aug 24 15:52:54 2008 @@ -166,7 +166,7 @@ static int control(int cmd,void *arg){ { int format; if (!ioctl(audio_fd, SNDCTL_DSP_GETFMTS, &format)) - if (format & (int)arg) + if ((unsigned int)format & (unsigned long)arg) return CONTROL_TRUE; return CONTROL_FALSE; }
On Sun, Aug 24, 2008 at 03:52:55PM +0200, ranma wrote:
Log: Fix 'cast from pointer to integer of different size' on 64bit architectures. Casting to long should work for 32bit and 64bit and not make a difference to the boolean operation (since 'format' is always 32bit (int) the upper 32bit of 'arg' won't matter, but the compiler should be happy now. Casting both to unsigned makes sure the compiler isn't messing things up by sign-extending 'format' to 64bit before masking)
Please break lines in commit messages. Diego
participants (2)
-
Diego Biurrun -
ranma