From 920a892892fd2ffcd15a6dd415e9bc4e8ca79ac8 Mon Sep 17 00:00:00 2001 From: ulion Date: Mon, 10 Dec 2007 01:43:33 +0000 Subject: Fix missing command line bug by making the input parameter constant. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25330 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libaf/af.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libaf/af.c b/libaf/af.c index eb5aa38d36..9ba869715e 100644 --- a/libaf/af.c +++ b/libaf/af.c @@ -102,13 +102,14 @@ af_instance_t* af_get(af_stream_t* s, char* name) /*/ Function for creating a new filter of type name. The name may contain the commandline parameters for the filter */ -static af_instance_t* af_create(af_stream_t* s, char* name) +static af_instance_t* af_create(af_stream_t* s, const char* name_with_cmd) { + char* name = strdup(name_with_cmd); char* cmdline = name; // Allocate space for the new filter and reset all pointers af_instance_t* new=malloc(sizeof(af_instance_t)); - if(!new){ + if (!name || !new) { af_msg(AF_MSG_ERROR,"[libaf] Could not allocate memory\n"); goto err_out; } @@ -137,17 +138,18 @@ static af_instance_t* af_create(af_stream_t* s, char* name) if(AF_OK == new->info->open(new) && AF_ERROR < new->control(new,AF_CONTROL_POST_CREATE,&s->cfg)){ if(cmdline){ - if(AF_ERRORcontrol(new,AF_CONTROL_COMMAND_LINE,cmdline)) - return new; + if(!AF_ERRORcontrol(new,AF_CONTROL_COMMAND_LINE,cmdline)) + goto err_out; } - else - return new; + free(name); + return new; } err_out: free(new); af_msg(AF_MSG_ERROR,"[libaf] Couldn't create or open audio filter '%s'\n", name); + free(name); return NULL; } -- cgit v1.2.3