Applied patch from Larry Doolittle to fix '>\na\n' bug. Should close bug #1132

This commit is contained in:
Mark Whitley 2001-03-14 17:26:37 +00:00
parent 2892c35bdb
commit 44a9914709
3 changed files with 24 additions and 9 deletions

11
lash.c
View File

@ -669,17 +669,22 @@ static void close_all()
static void free_job(struct job *cmd)
{
int i;
struct jobset *keep;
for (i = 0; i < cmd->num_progs; i++) {
free(cmd->progs[i].argv);
if (cmd->progs[i].redirects)
free(cmd->progs[i].redirects);
}
free(cmd->progs);
if (cmd->progs)
free(cmd->progs);
if (cmd->text)
free(cmd->text);
free(cmd->cmdbuf);
if (cmd->cmdbuf)
free(cmd->cmdbuf);
keep = cmd->job_list;
memset(cmd, 0, sizeof(struct job));
cmd->job_list = keep;
}
/* remove a job from the job_list */
@ -1296,7 +1301,7 @@ static int parse_command(char **command_ptr, struct job *job, int *inbg)
chptr++;
if (!*chptr) {
error_msg("file name expected after %c", *src);
error_msg("file name expected after %c", *(src-1));
free_job(job);
job->num_progs=0;
return 1;

11
sh.c
View File

@ -669,17 +669,22 @@ static void close_all()
static void free_job(struct job *cmd)
{
int i;
struct jobset *keep;
for (i = 0; i < cmd->num_progs; i++) {
free(cmd->progs[i].argv);
if (cmd->progs[i].redirects)
free(cmd->progs[i].redirects);
}
free(cmd->progs);
if (cmd->progs)
free(cmd->progs);
if (cmd->text)
free(cmd->text);
free(cmd->cmdbuf);
if (cmd->cmdbuf)
free(cmd->cmdbuf);
keep = cmd->job_list;
memset(cmd, 0, sizeof(struct job));
cmd->job_list = keep;
}
/* remove a job from the job_list */
@ -1296,7 +1301,7 @@ static int parse_command(char **command_ptr, struct job *job, int *inbg)
chptr++;
if (!*chptr) {
error_msg("file name expected after %c", *src);
error_msg("file name expected after %c", *(src-1));
free_job(job);
job->num_progs=0;
return 1;

View File

@ -669,17 +669,22 @@ static void close_all()
static void free_job(struct job *cmd)
{
int i;
struct jobset *keep;
for (i = 0; i < cmd->num_progs; i++) {
free(cmd->progs[i].argv);
if (cmd->progs[i].redirects)
free(cmd->progs[i].redirects);
}
free(cmd->progs);
if (cmd->progs)
free(cmd->progs);
if (cmd->text)
free(cmd->text);
free(cmd->cmdbuf);
if (cmd->cmdbuf)
free(cmd->cmdbuf);
keep = cmd->job_list;
memset(cmd, 0, sizeof(struct job));
cmd->job_list = keep;
}
/* remove a job from the job_list */
@ -1296,7 +1301,7 @@ static int parse_command(char **command_ptr, struct job *job, int *inbg)
chptr++;
if (!*chptr) {
error_msg("file name expected after %c", *src);
error_msg("file name expected after %c", *(src-1));
free_job(job);
job->num_progs=0;
return 1;