rc: fix segfault when SIGINT is received

Save the value of `runq' at the start of the function, so that the `pc'
update
at the end does work on that original value, and not on a probably
modified
value of `runq'.

fixes #14 http://code.swtch.com/plan9port/issue/14/

http://codereview.appspot.com/104066
This commit is contained in:
Michael Teichgräber 2009-08-08 16:27:01 -04:00
parent 1d534ed6ce
commit 74be46038d

View file

@ -110,6 +110,7 @@ Xpipe(void)
void void
Xbackq(void) Xbackq(void)
{ {
struct thread *p = runq;
char wd[8193]; char wd[8193];
int c; int c;
char *s, *ewd=&wd[8192], *stop; char *s, *ewd=&wd[8192], *stop;
@ -164,7 +165,7 @@ Xbackq(void)
runq->argv->words = v; runq->argv->words = v;
v = nextv; v = nextv;
} }
runq->pc = runq->code[runq->pc].i; p->pc = p->code[p->pc].i;
return; return;
} }
} }