summaryrefslogtreecommitdiffstats
path: root/libao2
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-10-13 16:22:59 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2004-10-13 16:22:59 +0000
commit95efc9ce4778b70c7d5bf49606e364150be0af9e (patch)
treef5a70cd299c006aa0acaa931945eed8fa51319a5 /libao2
parent30f8042aeaabebc1a58404ae928a0ab1933f6af1 (diff)
downloadmpv-95efc9ce4778b70c7d5bf49606e364150be0af9e.tar.bz2
mpv-95efc9ce4778b70c7d5bf49606e364150be0af9e.tar.xz
fixed small memleaks
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@13633 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2')
-rw-r--r--libao2/audio_out.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/libao2/audio_out.c b/libao2/audio_out.c
index b51449a0ae..d05d4d7d9c 100644
--- a/libao2/audio_out.c
+++ b/libao2/audio_out.c
@@ -137,20 +137,26 @@ ao_functions_t* init_best_audio_out(char** ao_list,int use_plugin,int rate,int c
// first try the preferred drivers, with their optional subdevice param:
if(ao_list && ao_list[0])
while(ao_list[0][0]){
- char* ao=strdup(ao_list[0]);
+ char* ao=ao_list[0];
+ int ao_len;
if (strncmp(ao, "alsa9", 5) == 0 || strncmp(ao, "alsa1x", 6) == 0) {
mp_msg(MSGT_AO, MSGL_FATAL, MSGTR_AO_ALSA9_1x_Removed);
- free(ao);
exit_player(NULL);
}
+ if (ao_subdevice) {
+ free(ao_subdevice);
+ ao_subdevice = NULL;
+ }
ao_subdevice=strchr(ao,':');
if(ao_subdevice){
- ao_subdevice[0]=0;
- ++ao_subdevice;
+ ao_len = ao_subdevice - ao;
+ ao_subdevice = strdup(&ao[ao_len + 1]);
}
+ else
+ ao_len = strlen(ao);
for(i=0;audio_out_drivers[i];i++){
ao_functions_t* audio_out=audio_out_drivers[i];
- if(!strcmp(audio_out->info->short_name,ao)){
+ if(!strncmp(audio_out->info->short_name,ao,ao_len)){
// name matches, try it
if(use_plugin){
audio_out_plugin.control(AOCONTROL_SET_PLUGIN_DRIVER,audio_out);
@@ -161,12 +167,14 @@ ao_functions_t* init_best_audio_out(char** ao_list,int use_plugin,int rate,int c
}
}
// continue...
- free(ao);
++ao_list;
if(!(ao_list[0])) return NULL; // do NOT fallback to others
}
+ if (ao_subdevice) {
+ free(ao_subdevice);
+ ao_subdevice = NULL;
+ }
// now try the rest...
- ao_subdevice=NULL;
for(i=0;audio_out_drivers[i];i++){
ao_functions_t* audio_out=audio_out_drivers[i];
if(use_plugin){