On Tue Mar 17 18:29:14 EDT 2009, urie...@gmail.com wrote: > Thanks martin for your analysis, this makes some sense to me, but as I > pointed out, even setting ifs to () doesn't solve the issue, so it > would be nice to find a solution to this. > > Right now having the output of `{} corrupted can be quite inconvenient...
it is unreasonable to expect to be able to generate tokens that are bigger than 8k. however, the '8' should not be dropped. i would think this small change would be worth consideration. ; diffy -c havefork.c /n/dump/2009/0317/sys/src/cmd/rc/havefork.c:74,80 - havefork.c:74,80 Xbackq(void) { char wd[8193]; - int c; + int c, trunc; char *s, *ewd=&wd[8192], *stop; struct io *f; var *ifs = vlook("ifs"); /n/dump/2009/0317/sys/src/cmd/rc/havefork.c:105,113 - havefork.c:105,116 while((c = rchr(f))!=EOF){ if(strchr(stop, c) || s==ewd){ if(s!=wd){ + trunc = s == ewd; *s='\0'; v = newword(wd, v); s = wd; + if(trunc) + *s++ = c; } } else *s++=c; - erik