rem: const char* args[8] = { ecasound_exec, "-c", "-D", ecasound_extraparams, NULL };
add: const char* args[8] = { ecasound_exec, "-c", "-D", NULL };
context: eci_handle_t eci_init_r(void){  struct eci_internal* eci_rep = NULL;  int cmd_send_pipe[2], cmd_receive_pipe[2];  char* ecasound_exec = getenv("ECASOUND");  char* ecasound_extraparams = getenv("ECASOUND_PARAMS");  /* read environment variables */  if (ecasound_exec == NULL) {    ecasound_exec = "ecasound";  }  if (ecasound_extraparams == NULL) {    /* default to only printing return-value messages */    ecasound_extraparams = "-d:256";  }  /* fork ecasound and setup two-way communication */  if (pipe(cmd_receive_pipe) == 0 && pipe(cmd_send_pipe) == 0) {    eci_rep = (struct eci_internal*)calloc(1, sizeof(struct eci_internal));    eci_rep->parser_repp = (struct eci_parser*)calloc(1, sizeof(struct eci_parser));    /* initialize variables */    eci_rep->commands_counter_rep = 0;    eci_rep->parser_repp->last_counter_rep = 0;    eci_rep->parser_repp->token_phase_rep = ECI_TOKEN_PHASE_NONE;    eci_rep->parser_repp->buffer_current_rep = 0;    eci_impl_clean_last_values(eci_rep->parser_repp);    eci_rep->pid_of_child_rep = fork();    if (eci_rep->pid_of_child_rep == 0) {       /* child */      /* -c = interactive mode, -D = direct prompts and banners to stderr */      const char* args[8] = { ecasound_exec, "-c", "-D", ecasound_extraparams, NULL };      int res = 0;      /* close all unused descriptors */      close(0);      close(1);      dup2(cmd_send_pipe[0], 0);      dup2(cmd_receive_pipe[1], 1);      close(cmd_receive_pipe[0]);      close(cmd_receive_pipe[1]);      close(cmd_send_pipe[0]);      close(cmd_send_pipe[1]);      freopen("/dev/null", "w", stderr);            /* notify the parent that we're up */      res = write(1, args, 1);       res = execvp(args[0], (char**)args);      if (res < 0) printf("(ecasoundc_sa) launcing ecasound FAILED!\n");            close(0);      close(1);      exit(res);      fprintf(stderr, "(ecasoundc_sa) You shouldn't see this!\n");    }    else if (eci_rep->pid_of_child_rep > 0) {       /* parent */      int res;      char buf[1];      eci_rep->pid_of_parent_rep = getpid();      eci_rep->cmd_read_fd_rep = cmd_receive_pipe[0];      eci_rep->cmd_write_fd_rep = cmd_send_pipe[1];      /* switch to non-blocking mode for read */      fcntl(eci_rep->cmd_read_fd_rep, F_SETFL, O_NONBLOCK);      /* check that fork succeeded() */      res = eci_impl_fd_read(eci_rep->cmd_read_fd_rep, buf, 1, ECI_READ_TIMEOUT_MS);      if (res != 1) {	fprintf(stderr, "(ecasoundc_sa) fork() of %s FAILED!\n", ecasound_exec);	free(eci_rep->parser_repp);	free(eci_rep);	eci_rep = NULL;      }      else {	write(eci_rep->cmd_write_fd_rep, "int-output-mode-wellformed\n", strlen("int-output-mode-wellformed\n"));	eci_rep->commands_counter_rep++;      	/* check that exec() succeeded */	eci_impl_read_return_value(eci_rep);	if (eci_rep->commands_counter_rep != eci_rep->parser_repp->last_counter_rep) {	  fprintf(stderr, "(ecasoundc_sa) exec() of %s FAILED (%d=%d)!\n", ecasound_exec, eci_rep->commands_counter_rep, eci_rep->parser_repp->last_counter_rep);	  free(eci_rep->parser_repp);	  free(eci_rep);	  eci_rep = NULL;	}      }    }  }  return (eci_handle_t)eci_rep;}