diff options
author | markw <markw@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-03-14 17:26:37 +0000 |
---|---|---|
committer | markw <markw@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-03-14 17:26:37 +0000 |
commit | 210fda5d9bdd9d5af39ec933c14d3c11f9352c0e (patch) | |
tree | 6bfa26b060af732168af8c8eb0e653dbada3f196 /sh.c | |
parent | cf81b06dc1cb9178102006a494cbf43169532c96 (diff) | |
download | busybox-w32-210fda5d9bdd9d5af39ec933c14d3c11f9352c0e.tar.gz busybox-w32-210fda5d9bdd9d5af39ec933c14d3c11f9352c0e.tar.bz2 busybox-w32-210fda5d9bdd9d5af39ec933c14d3c11f9352c0e.zip |
Applied patch from Larry Doolittle to fix '>\na\n' bug. Should close bug #1132
git-svn-id: svn://busybox.net/trunk/busybox@2075 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'sh.c')
-rw-r--r-- | sh.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -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; |