aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorMark Whitley <markw@lineo.com>2001-03-14 17:26:37 +0000
committerMark Whitley <markw@lineo.com>2001-03-14 17:26:37 +0000
commit44a991470955ec3018ba8f40cc3be7b864dc8cce (patch)
tree6bfa26b060af732168af8c8eb0e653dbada3f196 /shell
parent2892c35bdbfa05e786c087b183d31dafcd6abace (diff)
downloadbusybox-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.c11
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()
669static void free_job(struct job *cmd) 669static 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;