diff options
author | Mark Whitley <markw@lineo.com> | 2001-03-14 17:26:37 +0000 |
---|---|---|
committer | Mark Whitley <markw@lineo.com> | 2001-03-14 17:26:37 +0000 |
commit | 44a991470955ec3018ba8f40cc3be7b864dc8cce (patch) | |
tree | 6bfa26b060af732168af8c8eb0e653dbada3f196 /shell | |
parent | 2892c35bdbfa05e786c087b183d31dafcd6abace (diff) | |
download | busybox-w32-44a991470955ec3018ba8f40cc3be7b864dc8cce.tar.gz busybox-w32-44a991470955ec3018ba8f40cc3be7b864dc8cce.tar.bz2 busybox-w32-44a991470955ec3018ba8f40cc3be7b864dc8cce.zip |
Applied patch from Larry Doolittle to fix '>\na\n' bug. Should close bug #1132
Diffstat (limited to 'shell')
-rw-r--r-- | shell/lash.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/shell/lash.c b/shell/lash.c index 3c52e2a28..8edb78369 100644 --- a/shell/lash.c +++ b/shell/lash.c | |||
@@ -669,17 +669,22 @@ static void close_all() | |||
669 | static void free_job(struct job *cmd) | 669 | static void free_job(struct job *cmd) |
670 | { | 670 | { |
671 | int i; | 671 | int i; |
672 | struct jobset *keep; | ||
672 | 673 | ||
673 | for (i = 0; i < cmd->num_progs; i++) { | 674 | for (i = 0; i < cmd->num_progs; i++) { |
674 | free(cmd->progs[i].argv); | 675 | free(cmd->progs[i].argv); |
675 | if (cmd->progs[i].redirects) | 676 | if (cmd->progs[i].redirects) |
676 | free(cmd->progs[i].redirects); | 677 | free(cmd->progs[i].redirects); |
677 | } | 678 | } |
678 | free(cmd->progs); | 679 | if (cmd->progs) |
680 | free(cmd->progs); | ||
679 | if (cmd->text) | 681 | if (cmd->text) |
680 | free(cmd->text); | 682 | free(cmd->text); |
681 | free(cmd->cmdbuf); | 683 | if (cmd->cmdbuf) |
684 | free(cmd->cmdbuf); | ||
685 | keep = cmd->job_list; | ||
682 | memset(cmd, 0, sizeof(struct job)); | 686 | memset(cmd, 0, sizeof(struct job)); |
687 | cmd->job_list = keep; | ||
683 | } | 688 | } |
684 | 689 | ||
685 | /* remove a job from the job_list */ | 690 | /* remove a job from the job_list */ |
@@ -1296,7 +1301,7 @@ static int parse_command(char **command_ptr, struct job *job, int *inbg) | |||
1296 | chptr++; | 1301 | chptr++; |
1297 | 1302 | ||
1298 | if (!*chptr) { | 1303 | if (!*chptr) { |
1299 | error_msg("file name expected after %c", *src); | 1304 | error_msg("file name expected after %c", *(src-1)); |
1300 | free_job(job); | 1305 | free_job(job); |
1301 | job->num_progs=0; | 1306 | job->num_progs=0; |
1302 | return 1; | 1307 | return 1; |