[BusyBox] bug#1132: sh.c patch fixes problem
Larry Doolittle
ldoolitt at recycle.lbl.gov
Wed Mar 14 17:07:50 UTC 2001
This patch fixes the problem for me. Thanks to Fabrice for
finding the problem. It was general to all usage errors that
caused parse_command to free_job(job); return 1;
- Larry Doolittle <LRDoolittle at lbl.gov>
--- /home/ldoolitt/cvs/busybox/sh.c Wed Mar 14 08:18:52 2001
+++ sh.c Wed Mar 14 09:01:57 2001
@@ -669,17 +669,22 @@
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 @@
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;
More information about the busybox
mailing list