pike.c: fix edge case

This commit is contained in:
Kyryl Melekhin
2025-11-01 23:31:14 +00:00
parent a43ab17911
commit 0b7b6b9d81
2 changed files with 8 additions and 3 deletions

8
pike.c
View File

@@ -298,6 +298,10 @@ static int compilecode(const char *re_loc, rcode *prog, int sizecode)
memcpy(&code[PC], &code[term], size*sizeof(int));
PC += size;
}
if (!mincnt) {
nojmp = 2;
mincnt++;
}
for (i = maxcnt-mincnt; i > 0; i--) {
EMIT(PC++, SPLIT);
EMIT(PC++, REL(PC, PC+((size+2)*i)));
@@ -305,10 +309,8 @@ static int compilecode(const char *re_loc, rcode *prog, int sizecode)
memcpy(&code[PC], &code[term], size*sizeof(int));
PC += size;
}
if (!mincnt && maxcnt) {
nojmp = 1;
if (nojmp == 2)
goto zcase;
}
break;
case '?':
if (PC == term)