--- asterisk-v1-0-1/apps/app_festival.c Sun Sep 26 23:06:22 2004 +++ asterisk/apps/app_festival.c Fri Oct 15 16:19:42 2004 @@ -305,9 +305,9 @@ if (!(festivalcommand = ast_variable_retrieve(cfg, "general", "festivalcommand"))) { festivalcommand = "(tts_textasterisk \"%s\" 'file)(quit)\n"; } - ast_destroy(cfg); if (!vdata || ast_strlen_zero(vdata)) { ast_log(LOG_WARNING, "festival requires an argument (text)\n"); + ast_destroy(cfg); return -1; } strncpy(data, vdata, sizeof(data) - 1); @@ -325,6 +325,7 @@ if (fd < 0) { ast_log(LOG_WARNING,"festival_client: can't get socket\n"); + ast_destroy(cfg); return -1; } memset(&serv_addr, 0, sizeof(serv_addr)); @@ -333,6 +334,7 @@ serverhost = ast_gethostbyname(host, &ahp); if (serverhost == (struct hostent *)0) { ast_log(LOG_WARNING,"festival_client: gethostbyname failed\n"); + ast_destroy(cfg); return -1; } memmove(&serv_addr.sin_addr,serverhost->h_addr, serverhost->h_length); @@ -342,6 +344,7 @@ if (connect(fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) != 0) { ast_log(LOG_WARNING,"festival_client: connect to server failed\n"); + ast_destroy(cfg); return -1; } @@ -444,6 +447,7 @@ } } while (strcmp(ack,"OK\n") != 0); close(fd); + ast_destroy(cfg); LOCAL_USER_REMOVE(u); return res;