# HG changeset patch # User ulion # Date 1197251013 0 # Node ID 701de923a20d8ebba3b45f377ce97246290ac19e # Parent 456207bc0bd20371eb666c28356c4eda1f510c6e Fix missing command line bug by making the input parameter constant. diff -r 456207bc0bd2 -r 701de923a20d libaf/af.c --- a/libaf/af.c Sun Dec 09 21:44:50 2007 +0000 +++ b/libaf/af.c Mon Dec 10 01:43:33 2007 +0000 @@ -102,13 +102,14 @@ /*/ 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 @@ 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; }