summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/src/cmd/rc/code.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/src/cmd/rc/code.c b/sys/src/cmd/rc/code.c
index 89cc43183..8e0142997 100644
--- a/sys/src/cmd/rc/code.c
+++ b/sys/src/cmd/rc/code.c
@@ -181,7 +181,7 @@ outcode(tree *t, int eflag)
emits(fnstr(c1));
if((f = curfile(runq)) != nil){
emitf(Xsrcfile);
- emits(strdup(f));
+ emits(estrdup(f));
}
emitf(Xsrcline);
emiti(runq->lexline);
@@ -486,10 +486,11 @@ codefree(code *cp)
|| p->f==Xrdwr
|| p->f==Xasync || p->f==Xbackq || p->f==Xcase || p->f==Xfalse
|| p->f==Xfor || p->f==Xjump
+ || p->f==Xsrcline
|| p->f==Xsubshell || p->f==Xtrue) p++;
else if(p->f==Xdup || p->f==Xpipefd) p+=2;
else if(p->f==Xpipe) p+=4;
- else if(p->f==Xglobs) free(p[1].s), p+=2;
+ else if(p->f==Xglobs || p->f==Xsrcfile) free(p[1].s), p+=2;
else if(p->f==Xword || p->f==Xdelhere) free((++p)->s);
else if(p->f==Xfn){
free(p[2].s);