[mplayer-dev at kernel.dk: [MPlayer-dev-eng] [PATCH] sizeof(int) != sizeof(pointer)]

D Richard Felker III dalias at aerifal.cx
Wed Mar 12 18:39:03 CET 2003


Is this ok to commit? Comments, anyone?

Rich


On Wed, Mar 12, 2003 at 01:38:20PM +0100, Jens Axboe wrote:
> On Wed, Mar 12 2003, 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.
> > > > 
> > > > ----- Forwarded message from Jens Axboe <mplayer-dev at kernel.dk> -----
> > > > 
> > > > 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 :)
> 
> Since I'm such a nice guy, I updated the patch to accommodate your
> wishes.
> 
> Index: mixer.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/mixer.c,v
> retrieving revision 1.12
> diff -u -r1.12 mixer.c
> --- mixer.c	6 Jun 2002 07:13:42 -0000	1.12
> +++ mixer.c	12 Mar 2003 12:52:00 -0000
> @@ -22,7 +22,7 @@
>    ao_control_vol_t vol;
>    *l=0; *r=0;
>    if(audio_out){
> -    if(CONTROL_OK != audio_out->control(AOCONTROL_GET_VOLUME,(int)&vol))
> +    if(CONTROL_OK != audio_out->control(AOCONTROL_GET_VOLUME,&vol))
>        return;
>      *r=vol.right;
>      *l=vol.left;
> @@ -34,7 +34,7 @@
>    ao_control_vol_t vol;
>    vol.right=r; vol.left=l;
>    if(audio_out){
> -    if(CONTROL_OK != audio_out->control(AOCONTROL_SET_VOLUME,(int)&vol))
> +    if(CONTROL_OK != audio_out->control(AOCONTROL_SET_VOLUME,&vol))
>        return;
>    }
>   muted=0;
> Index: libao2/ao_alsa5.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_alsa5.c,v
> retrieving revision 1.13
> diff -u -r1.13 ao_alsa5.c
> --- libao2/ao_alsa5.c	1 Nov 2002 17:46:42 -0000	1.13
> +++ libao2/ao_alsa5.c	12 Mar 2003 12:52:00 -0000
> @@ -32,7 +32,7 @@
>  static int alsa_rate = SND_PCM_RATE_CONTINUOUS;
>  
>  /* to set/get/query special features/parameters */
> -static int control(int cmd, int arg)
> +static int control(int cmd, void *arg)
>  {
>      return(CONTROL_UNKNOWN);
>  }
> Index: libao2/ao_alsa9.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_alsa9.c,v
> retrieving revision 1.30
> diff -u -r1.30 ao_alsa9.c
> --- libao2/ao_alsa9.c	10 Jan 2003 18:28:18 -0000	1.30
> +++ libao2/ao_alsa9.c	12 Mar 2003 12:52:00 -0000
> @@ -79,7 +79,7 @@
>  
>  
>  /* to set/get/query special features/parameters */
> -static int control(int cmd, int arg)
> +static int control(int cmd, void *arg)
>  {
>    switch(cmd) {
>    case AOCONTROL_QUERY_FORMAT:
> Index: libao2/ao_arts.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_arts.c,v
> retrieving revision 1.4
> diff -u -r1.4 ao_arts.c
> --- libao2/ao_arts.c	27 Dec 2002 16:35:29 -0000	1.4
> +++ libao2/ao_arts.c	12 Mar 2003 12:52:00 -0000
> @@ -34,7 +34,7 @@
>  
>  LIBAO_EXTERN(arts)
>  
> -static int control(int cmd, int arg)
> +static int control(int cmd, void *arg)
>  {
>  	return(CONTROL_UNKNOWN);
>  }
> Index: libao2/ao_dxr2.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_dxr2.c,v
> retrieving revision 1.3
> diff -u -r1.3 ao_dxr2.c
> --- libao2/ao_dxr2.c	17 May 2002 23:51:36 -0000	1.3
> +++ libao2/ao_dxr2.c	12 Mar 2003 12:52:01 -0000
> @@ -28,7 +28,7 @@
>  extern int dxr2_fd;
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>    switch(cmd){
>    case AOCONTROL_GET_VOLUME:
>      if(dxr2_fd > 0) {
> Index: libao2/ao_esd.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_esd.c,v
> retrieving revision 1.2
> diff -u -r1.2 ao_esd.c
> --- libao2/ao_esd.c	28 Dec 2002 18:51:08 -0000	1.2
> +++ libao2/ao_esd.c	12 Mar 2003 12:52:01 -0000
> @@ -74,7 +74,7 @@
>  /*
>   * to set/get/query special features/parameters
>   */
> -static int control(int cmd, int arg)
> +static int control(int cmd, void *arg)
>  {
>      esd_player_info_t *esd_pi;
>      esd_info_t        *esd_i;
> Index: libao2/ao_mpegpes.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_mpegpes.c,v
> retrieving revision 1.17
> diff -u -r1.17 ao_mpegpes.c
> --- libao2/ao_mpegpes.c	12 Feb 2003 23:26:12 -0000	1.17
> +++ libao2/ao_mpegpes.c	12 Mar 2003 12:52:01 -0000
> @@ -49,7 +49,7 @@
>  
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>  #ifdef HAVE_DVB
>      switch(cmd){
>  	case AOCONTROL_GET_VOLUME:
> Index: libao2/ao_nas.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_nas.c,v
> retrieving revision 1.11
> diff -u -r1.11 ao_nas.c
> --- libao2/ao_nas.c	24 Nov 2002 23:13:15 -0000	1.11
> +++ libao2/ao_nas.c	12 Mar 2003 12:52:01 -0000
> @@ -333,7 +333,7 @@
>  }
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd, int arg)
> +static int control(int cmd, void *arg)
>  {
>  	AuDeviceAttributes *dattr;
>  	AuFixedPoint fpgain;
> Index: libao2/ao_null.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_null.c,v
> retrieving revision 1.9
> diff -u -r1.9 ao_null.c
> --- libao2/ao_null.c	22 Sep 2002 02:33:24 -0000	1.9
> +++ libao2/ao_null.c	12 Mar 2003 12:52:01 -0000
> @@ -41,7 +41,7 @@
>  }
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>      return -1;
>  }
>  
> Index: libao2/ao_oss.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_oss.c,v
> retrieving revision 1.38
> diff -u -r1.38 ao_oss.c
> --- libao2/ao_oss.c	28 Jan 2003 17:25:53 -0000	1.38
> +++ libao2/ao_oss.c	12 Mar 2003 12:52:01 -0000
> @@ -39,7 +39,7 @@
>  char *oss_mixer_device = PATH_DEV_MIXER;
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>      switch(cmd){
>  	case AOCONTROL_SET_DEVICE:
>  	    dsp=(char*)arg;
> Index: libao2/ao_pcm.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_pcm.c,v
> retrieving revision 1.16
> diff -u -r1.16 ao_pcm.c
> --- libao2/ao_pcm.c	4 Feb 2003 18:22:43 -0000	1.16
> +++ libao2/ao_pcm.c	12 Mar 2003 12:52:01 -0000
> @@ -68,7 +68,7 @@
>  static FILE *fp = NULL;
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>      return -1;
>  }
>  
> Index: libao2/ao_plugin.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_plugin.c,v
> retrieving revision 1.22
> diff -u -r1.22 ao_plugin.c
> --- libao2/ao_plugin.c	18 Jan 2003 01:06:05 -0000	1.22
> +++ libao2/ao_plugin.c	12 Mar 2003 12:52:01 -0000
> @@ -44,10 +44,10 @@
>  ao_plugin_cfg_t  ao_plugin_cfg=CFG_DEFAULTS; // Set in cfg-mplayer.h
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>    switch(cmd){
>    case AOCONTROL_SET_PLUGIN_DRIVER:
> -    ao_plugin_local_data.driver=(ao_functions_t*)arg;
> +    ao_plugin_local_data.driver=arg;
>      return CONTROL_OK;
>    case AOCONTROL_GET_VOLUME:
>    case AOCONTROL_SET_VOLUME:
> Index: libao2/ao_sdl.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_sdl.c,v
> retrieving revision 1.21
> diff -u -r1.21 ao_sdl.c
> --- libao2/ao_sdl.c	1 Nov 2002 17:46:42 -0000	1.21
> +++ libao2/ao_sdl.c	12 Mar 2003 12:52:01 -0000
> @@ -113,7 +113,7 @@
>  
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>  	switch (cmd) {
>  		case AOCONTROL_GET_VOLUME:
>  		{
> Index: libao2/ao_sgi.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_sgi.c,v
> retrieving revision 1.2
> diff -u -r1.2 ao_sgi.c
> --- libao2/ao_sgi.c	24 Nov 2001 05:21:22 -0000	1.2
> +++ libao2/ao_sgi.c	12 Mar 2003 12:52:01 -0000
> @@ -27,7 +27,7 @@
>  static ALport	ao_port;
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd, int arg){
> +static int control(int cmd, void *arg){
>    
>    printf("ao_sgi, control\n");
>    
> Index: libao2/ao_sun.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_sun.c,v
> retrieving revision 1.23
> diff -u -r1.23 ao_sun.c
> --- libao2/ao_sun.c	1 Nov 2002 17:46:42 -0000	1.23
> +++ libao2/ao_sun.c	12 Mar 2003 12:52:01 -0000
> @@ -376,7 +376,7 @@
>  }
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>      switch(cmd){
>      case AOCONTROL_SET_DEVICE:
>  	audio_dev=(char*)arg;
> Index: libao2/ao_win32.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/ao_win32.c,v
> retrieving revision 1.2
> diff -u -r1.2 ao_win32.c
> --- libao2/ao_win32.c	30 Dec 2002 13:52:29 -0000	1.2
> +++ libao2/ao_win32.c	12 Mar 2003 12:52:01 -0000
> @@ -64,7 +64,7 @@
>  }
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg)
> +static int control(int cmd,void *arg)
>  {
>  	DWORD volume;
>  	switch (cmd)
> Index: libao2/audio_out.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/audio_out.c,v
> retrieving revision 1.32
> diff -u -r1.32 audio_out.c
> --- libao2/audio_out.c	3 Jan 2003 05:10:29 -0000	1.32
> +++ libao2/audio_out.c	12 Mar 2003 12:52:01 -0000
> @@ -124,7 +124,7 @@
>  	    if(!strcmp(audio_out->info->short_name,ao)){
>  		// name matches, try it
>  		if(use_plugin){
> -		    audio_out_plugin.control(AOCONTROL_SET_PLUGIN_DRIVER,(int)audio_out);
> +		    audio_out_plugin.control(AOCONTROL_SET_PLUGIN_DRIVER,audio_out);
>  		    audio_out=&audio_out_plugin;
>  		}
>  		if(audio_out->init(rate,channels,format,flags))
> @@ -140,7 +140,7 @@
>      for(i=0;audio_out_drivers[i];i++){
>  	ao_functions_t* audio_out=audio_out_drivers[i];
>  	if(use_plugin){
> -	    audio_out_plugin.control(AOCONTROL_SET_PLUGIN_DRIVER,(int)audio_out);
> +	    audio_out_plugin.control(AOCONTROL_SET_PLUGIN_DRIVER,audio_out);
>  	    audio_out=&audio_out_plugin;
>  	}
>  	if(audio_out->init(rate,channels,format,flags))
> Index: libao2/audio_out.h
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/audio_out.h,v
> retrieving revision 1.11
> diff -u -r1.11 audio_out.h
> --- libao2/audio_out.h	29 Sep 2002 22:57:54 -0000	1.11
> +++ libao2/audio_out.h	12 Mar 2003 12:52:01 -0000
> @@ -18,7 +18,7 @@
>  typedef struct ao_functions_s
>  {
>  	ao_info_t *info;
> -        int (*control)(int cmd,int arg);
> +        int (*control)(int cmd,void *arg);
>          int (*init)(int rate,int channels,int format,int flags);
>          void (*uninit)();
>          void (*reset)();
> Index: libao2/audio_out_internal.h
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/audio_out_internal.h,v
> retrieving revision 1.3
> diff -u -r1.3 audio_out_internal.h
> --- libao2/audio_out_internal.h	24 Nov 2001 05:21:22 -0000	1.3
> +++ libao2/audio_out_internal.h	12 Mar 2003 12:52:01 -0000
> @@ -1,7 +1,7 @@
>  
>  // prototypes:
>  //static ao_info_t info;
> -static int control(int cmd,int arg);
> +static int control(int cmd, void *arg);
>  static int init(int rate,int channels,int format,int flags);
>  static void uninit();
>  static void reset();
> Index: libao2/audio_plugin.h
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/audio_plugin.h,v
> retrieving revision 1.12
> diff -u -r1.12 audio_plugin.h
> --- libao2/audio_plugin.h	25 Jul 2002 20:28:47 -0000	1.12
> +++ libao2/audio_plugin.h	12 Mar 2003 12:52:01 -0000
> @@ -5,7 +5,7 @@
>  typedef struct ao_plugin_functions_s
>  {
>  	ao_info_t *info;
> -        int (*control)(int cmd,int arg);
> +        int (*control)(int cmd, void *arg);
>          int (*init)(); 
>          void (*uninit)();
>          void (*reset)();
> Index: libao2/audio_plugin_internal.h
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/audio_plugin_internal.h,v
> retrieving revision 1.3
> diff -u -r1.3 audio_plugin_internal.h
> --- libao2/audio_plugin_internal.h	4 Dec 2001 15:45:21 -0000	1.3
> +++ libao2/audio_plugin_internal.h	12 Mar 2003 12:52:01 -0000
> @@ -1,5 +1,5 @@
>  // prototypes:
> -static int control(int cmd,int arg);
> +static int control(int cmd, void *arg);
>  static int init();
>  static void uninit();
>  static void reset();
> Index: libao2/pl_delay.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/pl_delay.c,v
> retrieving revision 1.6
> diff -u -r1.6 pl_delay.c
> --- libao2/pl_delay.c	22 Sep 2002 02:33:24 -0000	1.6
> +++ libao2/pl_delay.c	12 Mar 2003 12:52:01 -0000
> @@ -38,7 +38,7 @@
>  static pl_delay_t pl_delay={NULL,NULL,0,0,0,0};
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>    switch(cmd){
>    case AOCONTROL_PLUGIN_SET_LEN:
>      if(pl_delay.data) 
> Index: libao2/pl_eq.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/pl_eq.c,v
> retrieving revision 1.7
> diff -u -r1.7 pl_eq.c
> --- libao2/pl_eq.c	3 Jan 2003 15:12:18 -0000	1.7
> +++ libao2/pl_eq.c	12 Mar 2003 12:52:01 -0000
> @@ -62,7 +62,7 @@
>  static pl_eq_t pl_eq;
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>    switch(cmd){
>    case AOCONTROL_PLUGIN_SET_LEN:
>      return CONTROL_OK;
> Index: libao2/pl_extrastereo.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/pl_extrastereo.c,v
> retrieving revision 1.4
> diff -u -r1.4 pl_extrastereo.c
> --- libao2/pl_extrastereo.c	3 Jan 2003 15:12:18 -0000	1.4
> +++ libao2/pl_extrastereo.c	12 Mar 2003 12:52:01 -0000
> @@ -39,7 +39,7 @@
>  
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>    switch(cmd){
>    case AOCONTROL_PLUGIN_SET_LEN:
>      return CONTROL_OK;
> Index: libao2/pl_format.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/pl_format.c,v
> retrieving revision 1.7
> diff -u -r1.7 pl_format.c
> --- libao2/pl_format.c	2 Feb 2003 02:42:57 -0000	1.7
> +++ libao2/pl_format.c	12 Mar 2003 12:52:01 -0000
> @@ -57,7 +57,7 @@
>  #define SIGN_MASK	(1<<3)
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>    switch(cmd){
>    case AOCONTROL_PLUGIN_SET_LEN:
>      if(pl_format.data) 
> Index: libao2/pl_resample.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/pl_resample.c,v
> retrieving revision 1.12
> diff -u -r1.12 pl_resample.c
> --- libao2/pl_resample.c	3 Jan 2003 15:12:18 -0000	1.12
> +++ libao2/pl_resample.c	12 Mar 2003 12:52:01 -0000
> @@ -93,7 +93,7 @@
>  static pl_resample_t 	pl_resample	= {NULL,NULL,1,1,1,0,W};
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>    switch(cmd){
>    case AOCONTROL_PLUGIN_SET_LEN:
>      if(pl_resample.data) 
> Index: libao2/pl_surround.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/pl_surround.c,v
> retrieving revision 1.13
> diff -u -r1.13 pl_surround.c
> --- libao2/pl_surround.c	3 Jan 2003 15:12:18 -0000	1.13
> +++ libao2/pl_surround.c	12 Mar 2003 12:52:01 -0000
> @@ -79,7 +79,7 @@
>  static pl_surround_t pl_surround={0,20,NULL,NULL,NULL,0,0,NULL,0,0,0};
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>    switch(cmd){
>    case AOCONTROL_PLUGIN_SET_LEN:
>      if (pl_surround.passthrough) return CONTROL_OK;
> Index: libao2/pl_volnorm.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/pl_volnorm.c,v
> retrieving revision 1.6
> diff -u -r1.6 pl_volnorm.c
> --- libao2/pl_volnorm.c	3 Jan 2003 15:12:18 -0000	1.6
> +++ libao2/pl_volnorm.c	12 Mar 2003 12:52:01 -0000
> @@ -103,7 +103,7 @@
>  
>  
>  // minimal interface
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>    switch(cmd){
>    case AOCONTROL_PLUGIN_SET_LEN:
>      return CONTROL_OK;
> Index: libao2/pl_volume.c
> ===================================================================
> RCS file: /cvsroot/mplayer/main/libao2/pl_volume.c,v
> retrieving revision 1.3
> diff -u -r1.3 pl_volume.c
> --- libao2/pl_volume.c	3 Jan 2003 15:12:18 -0000	1.3
> +++ libao2/pl_volume.c	12 Mar 2003 12:52:01 -0000
> @@ -43,7 +43,7 @@
>  static pl_volume_t pl_volume={0,0,0};
>  
>  // to set/get/query special features/parameters
> -static int control(int cmd,int arg){
> +static int control(int cmd,void *arg){
>    switch(cmd){
>    case AOCONTROL_PLUGIN_SET_LEN:
>      return CONTROL_OK;
> 
> -- 
> Jens Axboe
> 
> _______________________________________________
> MPlayer-dev-eng mailing list
> MPlayer-dev-eng at mplayerhq.hu
> http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng


More information about the MPlayer-dev-eng mailing list