rc: avoid forking for final command that has variable assignments (to get $apid right)
basically, we want the following commands to print the same pid twice: rc -c 'cat /dev/pid &;echo $apid' vs: rc -c 'a=1 cat /dev/pid &;echo $apid' basically, Xsimple() calls exitnext() to determine if a simple command should be promoted to exec, by peeking ahead into the code and searching for Xexit instruction. Xexit might not follow immediately after the Xsimple instruction because of redirections, which exitnext() would skip. but it would not skip the Xunlocal instructions that where added by the variable assignment.
This commit is contained in:
parent
0e97c8d1d7
commit
a48b462e44
1 changed files with 1 additions and 1 deletions
|
@ -12,7 +12,7 @@
|
|||
int
|
||||
exitnext(void){
|
||||
union code *c=&runq->code[runq->pc];
|
||||
while(c->f==Xpopredir) c++;
|
||||
while(c->f==Xpopredir || c->f==Xunlocal) c++;
|
||||
return c->f==Xexit;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue