From b72f2848dd7cbbd1eec9ad6470bc569795ef1d00 Mon Sep 17 00:00:00 2001 From: ceriel Date: Wed, 22 Jun 1988 18:47:48 +0000 Subject: [PATCH] fixed panic mode --- mach/proto/ncg/codegen.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/mach/proto/ncg/codegen.c b/mach/proto/ncg/codegen.c index 86baa8b0b..72ffee56f 100644 --- a/mach/proto/ncg/codegen.c +++ b/mach/proto/ncg/codegen.c @@ -132,6 +132,7 @@ unsigned codegen(codep,ply,toplevel,costlimit,forced) byte *codep; unsigned cost if (toplevel) paniced=0; savebp = nextem(toplevel); panic: + if (toplevel) totalcost = 0; bp = savebp; #endif if (bp == 0) { @@ -168,18 +169,16 @@ unsigned codegen(codep,ply,toplevel,costlimit,forced) byte *codep; unsigned cost if (Debug) fprintf(stderr,"distance of pos %d is %u\n",i,dist); #endif - if (dist<=mindistance) { + if (dist<=mindistance +#ifdef ALLOW_NEXTEM + || paniced +#endif + ) { if (dist1) fprintf(stderr,"Pattern too long, %d with only %d items on stack\n", myfree(regls[j]); #ifndef ALLOW_NEXTEM assert(!toplevel); + BROKE(); #else assert(!(toplevel&&paniced)); if (paniced) goto normalfailed; + totalcost = INFINITY; + for (i=0;ic3_prop<0) { totalcost+=docoerc(tp,cp,ply,toplevel,0); -- 2.34.1