term% hoc func fac(a) { if (a <= 0) return 1 else return a * fac(a-1) } fac(99) hoc 903: suicide: sys: trap: fault read addr=0x1b004 pc=0x0000af9a This change was copied from the published unix version Reference: /n/sources/patch/applied/hoc-nested-func Date: Tue Feb 20 05:36:44 CET 2007 Signed-off-by: lawler@buffalo.edu --- /sys/src/cmd/hoc/code.c Tue Feb 20 05:31:32 2007 +++ /sys/src/cmd/hoc/code.c Tue Feb 20 05:31:30 2007 @@ -161,7 +161,7 @@ Symbol *sp = (Symbol *)pc[0]; /* symbol table entry */ /* for function */ - if (fp >= &frame[NFRAME]) + if (fp >= &frame[NFRAME-1]) execerror(sp->name, "call nested too deeply"); fp++; fp->sp = sp;