[MPlayer-dev-eng] [PATCH] sizeof(int) != sizeof(pointer)

Jens Axboe mplayer-dev at kernel.dk
Tue Mar 11 10:39:28 CET 2003


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.

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	11 Mar 2003 09:51:49 -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,(long)&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,(long)&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	11 Mar 2003 09:51:49 -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, unsigned long 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	11 Mar 2003 09:51:49 -0000
@@ -79,7 +79,7 @@
 
 
 /* to set/get/query special features/parameters */
-static int control(int cmd, int arg)
+static int control(int cmd, unsigned long 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	11 Mar 2003 09:51:49 -0000
@@ -34,7 +34,7 @@
 
 LIBAO_EXTERN(arts)
 
-static int control(int cmd, int arg)
+static int control(int cmd, unsigned long 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	11 Mar 2003 09:51:49 -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,unsigned long 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	11 Mar 2003 09:51:49 -0000
@@ -74,7 +74,7 @@
 /*
  * to set/get/query special features/parameters
  */
-static int control(int cmd, int arg)
+static int control(int cmd, unsigned long 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	11 Mar 2003 09:51:49 -0000
@@ -49,7 +49,7 @@
 
 
 // to set/get/query special features/parameters
-static int control(int cmd,int arg){
+static int control(int cmd,unsigned long 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	11 Mar 2003 09:51:49 -0000
@@ -333,7 +333,7 @@
 }
 
 // to set/get/query special features/parameters
-static int control(int cmd, int arg)
+static int control(int cmd, unsigned long 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	11 Mar 2003 09:51:49 -0000
@@ -41,7 +41,7 @@
 }
 
 // to set/get/query special features/parameters
-static int control(int cmd,int arg){
+static int control(int cmd,unsigned long 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	11 Mar 2003 09:51:49 -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,unsigned long 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	11 Mar 2003 09:51:49 -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,unsigned long 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	11 Mar 2003 09:51:50 -0000
@@ -44,7 +44,7 @@
 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,unsigned long arg){
   switch(cmd){
   case AOCONTROL_SET_PLUGIN_DRIVER:
     ao_plugin_local_data.driver=(ao_functions_t*)arg;
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	11 Mar 2003 09:51:50 -0000
@@ -113,7 +113,7 @@
 
 
 // to set/get/query special features/parameters
-static int control(int cmd,int arg){
+static int control(int cmd,unsigned long 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	11 Mar 2003 09:51:50 -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, unsigned long 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	11 Mar 2003 09:51:50 -0000
@@ -376,7 +376,7 @@
 }
 
 // to set/get/query special features/parameters
-static int control(int cmd,int arg){
+static int control(int cmd,unsigned long 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	11 Mar 2003 09:51:50 -0000
@@ -64,7 +64,7 @@
 }
 
 // to set/get/query special features/parameters
-static int control(int cmd,int arg)
+static int control(int cmd,unsigned long 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	11 Mar 2003 09:51:50 -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,(unsigned long)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,(unsigned long)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	11 Mar 2003 09:51:50 -0000
@@ -18,7 +18,7 @@
 typedef struct ao_functions_s
 {
 	ao_info_t *info;
-        int (*control)(int cmd,int arg);
+        int (*control)(int cmd,unsigned long 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	11 Mar 2003 09:51:50 -0000
@@ -1,7 +1,7 @@
 
 // prototypes:
 //static ao_info_t info;
-static int control(int cmd,int arg);
+static int control(int cmd,unsigned long 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	11 Mar 2003 09:51:50 -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,unsigned long 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	11 Mar 2003 09:51:50 -0000
@@ -1,5 +1,5 @@
 // prototypes:
-static int control(int cmd,int arg);
+static int control(int cmd,unsigned long 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	11 Mar 2003 09:51:50 -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,unsigned long 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	11 Mar 2003 09:51:50 -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,unsigned long 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	11 Mar 2003 09:51:50 -0000
@@ -39,7 +39,7 @@
 
 
 // to set/get/query special features/parameters
-static int control(int cmd,int arg){
+static int control(int cmd,unsigned long 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	11 Mar 2003 09:51:50 -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,unsigned long 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	11 Mar 2003 09:51:50 -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,unsigned long 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	11 Mar 2003 09:51:50 -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,unsigned long 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	11 Mar 2003 09:51:50 -0000
@@ -103,7 +103,7 @@
 
 
 // minimal interface
-static int control(int cmd,int arg){
+static int control(int cmd,unsigned long 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	11 Mar 2003 09:51:50 -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,unsigned long arg){
   switch(cmd){
   case AOCONTROL_PLUGIN_SET_LEN:
     return CONTROL_OK;

-- 
Jens Axboe



More information about the MPlayer-dev-eng mailing list