changeset 25302:701de923a20d

Fix missing command line bug by making the input parameter constant.
author ulion
date Mon, 10 Dec 2007 01:43:33 +0000
parents 456207bc0bd2
children 9139c368a493
files libaf/af.c
diffstat 1 files changed, 8 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- 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_ERROR<new->control(new,AF_CONTROL_COMMAND_LINE,cmdline))
-	return new;
+      if(!AF_ERROR<new->control(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;
 }