fix split count mistake

This commit is contained in:
Kyryl Melekhin
2021-10-20 22:45:38 +00:00
parent 8046a29f1e
commit f038068dbb

12
pike.c
View File

@@ -310,14 +310,16 @@ static int _compilecode(const char **re_loc, rcode *prog, int sizecode)
PC += size; PC += size;
} }
if (code) { if (code) {
mincnt = 0; inf = 0;
for (i = 0; i < size; i++) for (i = 0; i < size; i++)
switch (code[term+i]) { switch (code[term+i]) {
case CLASS:
i += code[term+i+2] * 2 + 2;
icnt++;
break;
case SPLIT: case SPLIT:
case RSPLIT: case RSPLIT:
mincnt++; inf++;
case CLASS:
i += code[term+i+2] * 2 + 1;
case JMP: case JMP:
case SAVE: case SAVE:
case CHAR: case CHAR:
@@ -325,7 +327,7 @@ static int _compilecode(const char **re_loc, rcode *prog, int sizecode)
case ANY: case ANY:
icnt++; icnt++;
} }
prog->splits += mincnt * icnt; prog->splits += inf * icnt;
prog->len += (maxcnt-1) * icnt; prog->len += (maxcnt-1) * icnt;
} }
break; break;